[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openshift-cluster-update-advisor":3,"mdc--dpdmjk-key":35,"related-org-openshift-cluster-update-advisor":1858,"related-repo-openshift-cluster-update-advisor":1967},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"cluster-update-advisor","assess OpenShift cluster update readiness","Assess OpenShift cluster update (upgrade) readiness and risk. Use when evaluating whether a cluster is safe to update, when an update is available, or when the user asks about update risks, prerequisites, blockers, or best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openshift","OpenShift (Red Hat)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenshift.png",[12,16,19,21],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":17,"slug":18,"type":15},"Deployment","deployment",{"name":20,"slug":8,"type":15},"OpenShift",{"name":22,"slug":23,"type":15},"Risk Assessment","risk-assessment",5,"https:\u002F\u002Fgithub.com\u002Fopenshift\u002Fagentic-skills","2026-05-12T06:07:16.759342",null,16,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"OpenShift  Container Platform skills for  AI agents and OpenShift","https:\u002F\u002Fgithub.com\u002Fopenshift\u002Fagentic-skills\u002Ftree\u002FHEAD\u002Fcluster-update\u002Fupdate-advisor","---\nname: cluster-update-advisor\ndescription: Assess OpenShift cluster update (upgrade) readiness and risk. Use when evaluating whether a cluster is safe to update, when an update is available, or when the user asks about update risks, prerequisites, blockers, or best practices.\n---\n\n# Cluster Update Advisor\n\n## Purpose\n\nAssess cluster update readiness and produce a structured risk report with\nactionable prerequisites, blockers, and recommendations.\n\nThe proposal request includes pre-collected cluster readiness data (JSON)\ngathered by the Cluster Version Operator. Analyze this data, classify findings,\nand produce a decision with evidence. Do not re-collect cluster data — it is\nalready in the request.\n\n## Inputs\n\nThe proposal request contains:\n- Current and target version metadata\n- Channel and update path information\n- **Cluster readiness JSON** — cluster health checks with context relevant to preparing for the update\n\nThe readiness JSON is embedded in the request between ` ```json ` markers under\nthe \"Cluster Readiness Data\" heading. Parse it to begin analysis.\n\n**Readiness JSON structure:**\n\n```json\n{\n  \"current_version\": \"4.21.5\",\n  \"target_version\": \"4.21.8\",\n  \"checks\": {\n    \"cluster_conditions\":    { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"operator_health\":       { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"api_deprecations\":      { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"node_capacity\":         { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"pdb_drain\":             { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"etcd_health\":           { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"network\":               { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"crd_compat\":            { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"olm_operator_lifecycle\": { \"_status\": \"ok\", \"summary\": {...}, ... }\n  }\n}\n```\n\nEach check contains `_status` (`ok` or `error`) and check-specific data\nwith a `summary` section for quick parsing.\n\n## Evaluation\n\n### Parse readiness data\n\nExtract the JSON from the proposal request.\nCount checks with `_status` `ok` vs `error` for completeness.\n\n### Verify data completeness\n\nAny check with `_status` `error` represents a gap in visibility.\nNote incomplete areas — they reduce confidence.\n\n### Evaluate findings in detail\n\nIf the system prompt includes organization-specific policy (thresholds, scheduling preferences, risk tolerance), apply those constraints.\nOtherwise use sensible defaults.\nWalk through each check's summary and detail data:\n\n- Compare numeric thresholds (node headroom, etcd backup age)\n- Evaluate conditional update risks against cluster state\n- Identify compounding risks (e.g., paused MCP + cert expiry)\n- Estimate update duration (~10 min\u002Fnode)\n\n### Classify findings\n\nAssign each finding a severity per the classification table.\n\n| Check | Blocker if... | Warning if... |\n|---|---|---|\n| Cluster conditions | Upgradeable=False (non-z-stream) | Update already in progress |\n| API deprecations | Workloads use APIs **removed** in target | Workloads use **deprecated** APIs |\n| Operator health | Any operator has Upgradeable=False | Any operator is Degraded=True |\n| MachineConfigPool | Any MCP paused or degraded | MCP updating or not all machines ready |\n| Node capacity | Headroom \u003C 20% | Headroom \u003C 40% |\n| PDB config | PDB blocks ALL replicas from draining | PDB has maxUnavailable: 0 |\n| etcd health | Any member unhealthy | No recent backup (within 24h) |\n| Network plugin | SDN in use and target requires OVN (4.17+) | Using deprecated SDN (\u003C 4.17) |\n| CRD compatibility | Stored version not served; operator maxOpenShiftVersion \u003C target | Deprecated versions still served |\n| OLM operator lifecycle | Installed operator incompatible with target OCP; operator product EOL | Operator has pending update; operator product in Maintenance Support |\n\nFor other checks, treat an issue as a blocker if would cause data loss, a performance regression, or a failed update.\nTreat the issue as a warning if would cause temporary disruption or slow updates.\n\n#### Investigate with other skills\n\nIf additional information or context is needed to classify a finding, these skills may be useful:\n\n- **`openshift-docs`** — Read official OpenShift update docs for version-specific\n  procedures and breaking changes.\n\n- **`prometheus`** — Query cluster metrics for trend analysis (etcd latency,\n  CPU headroom, firing alerts).\n\n- **`jira`** — Search Red Hat Jira for bugs and known issues affecting the target version.\n\n- **`product-lifecycle`** — Query Red Hat Product Life Cycle API to check\n  support status and OCP compatibility for installed operators. Use the operator's\n  `package` name from OLM readiness data to look up entries via the `package`\n  field (exact match). Flag operators whose product version is End of life or whose\n  `openshift_compatibility` does not include the target OCP version.\n\n### Classify overall recommendation\n\nAggregate finding classification, and and make a decision on the overall assessment:\n\n* escalate  — insufficient data for confident assessment.\n* block     — findings must be resolved before update.\n* warn — findings exist but manageable with prerequisites.\n* recommend — all checks pass within acceptable thresholds.\n\n| Blockers | Warnings | Decision |\n|---|---|---|\n| Unable to assess | any | `escalate` |\n| 1+ | any | `block` |\n| 0 | 1+ | `warn` |\n| 0 | 0 | `recommend` |\n\n### Produce a structured risk report\n\nThe output schema is enforced by the OlsAgent CR's `outputSchema` field —\nthe operator handles structured output compliance via the LLM API.\n\n## Failure Modes — What NOT to Do\n\n1. **Never recommend updating without analyzing the readiness data.** The JSON\n   in the request is the source of truth.\n\n2. **Never dismiss conditional update risks.** If the update path is conditional,\n   evaluate each risk against the cluster.\n\n3. **Never skip the API deprecation check.** Workloads using removed APIs will\n   break after the update.\n\n4. **Never assume etcd is healthy.** Always check member health in the readiness data.\n\n5. **Never fabricate Jira issue keys, KB article IDs, or CVE numbers.** Use the\n   `redhat-support` skill to get real data.\n\n6. **Never recommend skipping an update version** unless the readiness data shows\n   that path exists.\n\n7. **Never recommend force-updating.** If the standard path is blocked, report it.\n",{"data":36,"body":37},{"name":4,"description":6},{"type":38,"children":39},"root",[40,48,55,61,66,72,77,103,117,125,1132,1166,1172,1179,1205,1211,1229,1235,1240,1263,1269,1274,1501,1506,1513,1518,1600,1606,1611,1634,1745,1751,1764,1770,1852],{"type":41,"tag":42,"props":43,"children":44},"element","h1",{"id":4},[45],{"type":46,"value":47},"text","Cluster Update Advisor",{"type":41,"tag":49,"props":50,"children":52},"h2",{"id":51},"purpose",[53],{"type":46,"value":54},"Purpose",{"type":41,"tag":56,"props":57,"children":58},"p",{},[59],{"type":46,"value":60},"Assess cluster update readiness and produce a structured risk report with\nactionable prerequisites, blockers, and recommendations.",{"type":41,"tag":56,"props":62,"children":63},{},[64],{"type":46,"value":65},"The proposal request includes pre-collected cluster readiness data (JSON)\ngathered by the Cluster Version Operator. Analyze this data, classify findings,\nand produce a decision with evidence. Do not re-collect cluster data — it is\nalready in the request.",{"type":41,"tag":49,"props":67,"children":69},{"id":68},"inputs",[70],{"type":46,"value":71},"Inputs",{"type":41,"tag":56,"props":73,"children":74},{},[75],{"type":46,"value":76},"The proposal request contains:",{"type":41,"tag":78,"props":79,"children":80},"ul",{},[81,87,92],{"type":41,"tag":82,"props":83,"children":84},"li",{},[85],{"type":46,"value":86},"Current and target version metadata",{"type":41,"tag":82,"props":88,"children":89},{},[90],{"type":46,"value":91},"Channel and update path information",{"type":41,"tag":82,"props":93,"children":94},{},[95,101],{"type":41,"tag":96,"props":97,"children":98},"strong",{},[99],{"type":46,"value":100},"Cluster readiness JSON",{"type":46,"value":102}," — cluster health checks with context relevant to preparing for the update",{"type":41,"tag":56,"props":104,"children":105},{},[106,108,115],{"type":46,"value":107},"The readiness JSON is embedded in the request between ",{"type":41,"tag":109,"props":110,"children":112},"code",{"className":111},[],[113],{"type":46,"value":114},"```json",{"type":46,"value":116}," markers under\nthe \"Cluster Readiness Data\" heading. Parse it to begin analysis.",{"type":41,"tag":56,"props":118,"children":119},{},[120],{"type":41,"tag":96,"props":121,"children":122},{},[123],{"type":46,"value":124},"Readiness JSON structure:",{"type":41,"tag":126,"props":127,"children":132},"pre",{"className":128,"code":129,"language":130,"meta":131,"style":131},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"current_version\": \"4.21.5\",\n  \"target_version\": \"4.21.8\",\n  \"checks\": {\n    \"cluster_conditions\":    { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"operator_health\":       { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"api_deprecations\":      { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"node_capacity\":         { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"pdb_drain\":             { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"etcd_health\":           { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"network\":               { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"crd_compat\":            { \"_status\": \"ok\", \"summary\": {...}, ... },\n    \"olm_operator_lifecycle\": { \"_status\": \"ok\", \"summary\": {...}, ... }\n  }\n}\n","json","",[133],{"type":41,"tag":109,"props":134,"children":135},{"__ignoreMap":131},[136,148,193,231,257,363,457,551,645,739,833,927,1021,1115,1124],{"type":41,"tag":137,"props":138,"children":141},"span",{"class":139,"line":140},"line",1,[142],{"type":41,"tag":137,"props":143,"children":145},{"style":144},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[146],{"type":46,"value":147},"{\n",{"type":41,"tag":137,"props":149,"children":151},{"class":139,"line":150},2,[152,157,163,168,173,178,184,188],{"type":41,"tag":137,"props":153,"children":154},{"style":144},[155],{"type":46,"value":156},"  \"",{"type":41,"tag":137,"props":158,"children":160},{"style":159},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[161],{"type":46,"value":162},"current_version",{"type":41,"tag":137,"props":164,"children":165},{"style":144},[166],{"type":46,"value":167},"\"",{"type":41,"tag":137,"props":169,"children":170},{"style":144},[171],{"type":46,"value":172},":",{"type":41,"tag":137,"props":174,"children":175},{"style":144},[176],{"type":46,"value":177}," \"",{"type":41,"tag":137,"props":179,"children":181},{"style":180},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[182],{"type":46,"value":183},"4.21.5",{"type":41,"tag":137,"props":185,"children":186},{"style":144},[187],{"type":46,"value":167},{"type":41,"tag":137,"props":189,"children":190},{"style":144},[191],{"type":46,"value":192},",\n",{"type":41,"tag":137,"props":194,"children":196},{"class":139,"line":195},3,[197,201,206,210,214,218,223,227],{"type":41,"tag":137,"props":198,"children":199},{"style":144},[200],{"type":46,"value":156},{"type":41,"tag":137,"props":202,"children":203},{"style":159},[204],{"type":46,"value":205},"target_version",{"type":41,"tag":137,"props":207,"children":208},{"style":144},[209],{"type":46,"value":167},{"type":41,"tag":137,"props":211,"children":212},{"style":144},[213],{"type":46,"value":172},{"type":41,"tag":137,"props":215,"children":216},{"style":144},[217],{"type":46,"value":177},{"type":41,"tag":137,"props":219,"children":220},{"style":180},[221],{"type":46,"value":222},"4.21.8",{"type":41,"tag":137,"props":224,"children":225},{"style":144},[226],{"type":46,"value":167},{"type":41,"tag":137,"props":228,"children":229},{"style":144},[230],{"type":46,"value":192},{"type":41,"tag":137,"props":232,"children":234},{"class":139,"line":233},4,[235,239,244,248,252],{"type":41,"tag":137,"props":236,"children":237},{"style":144},[238],{"type":46,"value":156},{"type":41,"tag":137,"props":240,"children":241},{"style":159},[242],{"type":46,"value":243},"checks",{"type":41,"tag":137,"props":245,"children":246},{"style":144},[247],{"type":46,"value":167},{"type":41,"tag":137,"props":249,"children":250},{"style":144},[251],{"type":46,"value":172},{"type":41,"tag":137,"props":253,"children":254},{"style":144},[255],{"type":46,"value":256}," {\n",{"type":41,"tag":137,"props":258,"children":259},{"class":139,"line":24},[260,265,271,275,279,284,288,294,298,302,306,311,315,320,324,329,333,337,342,348,353,358],{"type":41,"tag":137,"props":261,"children":262},{"style":144},[263],{"type":46,"value":264},"    \"",{"type":41,"tag":137,"props":266,"children":268},{"style":267},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[269],{"type":46,"value":270},"cluster_conditions",{"type":41,"tag":137,"props":272,"children":273},{"style":144},[274],{"type":46,"value":167},{"type":41,"tag":137,"props":276,"children":277},{"style":144},[278],{"type":46,"value":172},{"type":41,"tag":137,"props":280,"children":281},{"style":144},[282],{"type":46,"value":283},"    {",{"type":41,"tag":137,"props":285,"children":286},{"style":144},[287],{"type":46,"value":177},{"type":41,"tag":137,"props":289,"children":291},{"style":290},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[292],{"type":46,"value":293},"_status",{"type":41,"tag":137,"props":295,"children":296},{"style":144},[297],{"type":46,"value":167},{"type":41,"tag":137,"props":299,"children":300},{"style":144},[301],{"type":46,"value":172},{"type":41,"tag":137,"props":303,"children":304},{"style":144},[305],{"type":46,"value":177},{"type":41,"tag":137,"props":307,"children":308},{"style":180},[309],{"type":46,"value":310},"ok",{"type":41,"tag":137,"props":312,"children":313},{"style":144},[314],{"type":46,"value":167},{"type":41,"tag":137,"props":316,"children":317},{"style":144},[318],{"type":46,"value":319},",",{"type":41,"tag":137,"props":321,"children":322},{"style":144},[323],{"type":46,"value":177},{"type":41,"tag":137,"props":325,"children":326},{"style":290},[327],{"type":46,"value":328},"summary",{"type":41,"tag":137,"props":330,"children":331},{"style":144},[332],{"type":46,"value":167},{"type":41,"tag":137,"props":334,"children":335},{"style":144},[336],{"type":46,"value":172},{"type":41,"tag":137,"props":338,"children":339},{"style":144},[340],{"type":46,"value":341}," {",{"type":41,"tag":137,"props":343,"children":345},{"style":344},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[346],{"type":46,"value":347},"...",{"type":41,"tag":137,"props":349,"children":350},{"style":144},[351],{"type":46,"value":352},"},",{"type":41,"tag":137,"props":354,"children":355},{"style":344},[356],{"type":46,"value":357}," ... ",{"type":41,"tag":137,"props":359,"children":360},{"style":144},[361],{"type":46,"value":362},"},\n",{"type":41,"tag":137,"props":364,"children":366},{"class":139,"line":365},6,[367,371,376,380,384,389,393,397,401,405,409,413,417,421,425,429,433,437,441,445,449,453],{"type":41,"tag":137,"props":368,"children":369},{"style":144},[370],{"type":46,"value":264},{"type":41,"tag":137,"props":372,"children":373},{"style":267},[374],{"type":46,"value":375},"operator_health",{"type":41,"tag":137,"props":377,"children":378},{"style":144},[379],{"type":46,"value":167},{"type":41,"tag":137,"props":381,"children":382},{"style":144},[383],{"type":46,"value":172},{"type":41,"tag":137,"props":385,"children":386},{"style":144},[387],{"type":46,"value":388},"       {",{"type":41,"tag":137,"props":390,"children":391},{"style":144},[392],{"type":46,"value":177},{"type":41,"tag":137,"props":394,"children":395},{"style":290},[396],{"type":46,"value":293},{"type":41,"tag":137,"props":398,"children":399},{"style":144},[400],{"type":46,"value":167},{"type":41,"tag":137,"props":402,"children":403},{"style":144},[404],{"type":46,"value":172},{"type":41,"tag":137,"props":406,"children":407},{"style":144},[408],{"type":46,"value":177},{"type":41,"tag":137,"props":410,"children":411},{"style":180},[412],{"type":46,"value":310},{"type":41,"tag":137,"props":414,"children":415},{"style":144},[416],{"type":46,"value":167},{"type":41,"tag":137,"props":418,"children":419},{"style":144},[420],{"type":46,"value":319},{"type":41,"tag":137,"props":422,"children":423},{"style":144},[424],{"type":46,"value":177},{"type":41,"tag":137,"props":426,"children":427},{"style":290},[428],{"type":46,"value":328},{"type":41,"tag":137,"props":430,"children":431},{"style":144},[432],{"type":46,"value":167},{"type":41,"tag":137,"props":434,"children":435},{"style":144},[436],{"type":46,"value":172},{"type":41,"tag":137,"props":438,"children":439},{"style":144},[440],{"type":46,"value":341},{"type":41,"tag":137,"props":442,"children":443},{"style":344},[444],{"type":46,"value":347},{"type":41,"tag":137,"props":446,"children":447},{"style":144},[448],{"type":46,"value":352},{"type":41,"tag":137,"props":450,"children":451},{"style":344},[452],{"type":46,"value":357},{"type":41,"tag":137,"props":454,"children":455},{"style":144},[456],{"type":46,"value":362},{"type":41,"tag":137,"props":458,"children":460},{"class":139,"line":459},7,[461,465,470,474,478,483,487,491,495,499,503,507,511,515,519,523,527,531,535,539,543,547],{"type":41,"tag":137,"props":462,"children":463},{"style":144},[464],{"type":46,"value":264},{"type":41,"tag":137,"props":466,"children":467},{"style":267},[468],{"type":46,"value":469},"api_deprecations",{"type":41,"tag":137,"props":471,"children":472},{"style":144},[473],{"type":46,"value":167},{"type":41,"tag":137,"props":475,"children":476},{"style":144},[477],{"type":46,"value":172},{"type":41,"tag":137,"props":479,"children":480},{"style":144},[481],{"type":46,"value":482},"      {",{"type":41,"tag":137,"props":484,"children":485},{"style":144},[486],{"type":46,"value":177},{"type":41,"tag":137,"props":488,"children":489},{"style":290},[490],{"type":46,"value":293},{"type":41,"tag":137,"props":492,"children":493},{"style":144},[494],{"type":46,"value":167},{"type":41,"tag":137,"props":496,"children":497},{"style":144},[498],{"type":46,"value":172},{"type":41,"tag":137,"props":500,"children":501},{"style":144},[502],{"type":46,"value":177},{"type":41,"tag":137,"props":504,"children":505},{"style":180},[506],{"type":46,"value":310},{"type":41,"tag":137,"props":508,"children":509},{"style":144},[510],{"type":46,"value":167},{"type":41,"tag":137,"props":512,"children":513},{"style":144},[514],{"type":46,"value":319},{"type":41,"tag":137,"props":516,"children":517},{"style":144},[518],{"type":46,"value":177},{"type":41,"tag":137,"props":520,"children":521},{"style":290},[522],{"type":46,"value":328},{"type":41,"tag":137,"props":524,"children":525},{"style":144},[526],{"type":46,"value":167},{"type":41,"tag":137,"props":528,"children":529},{"style":144},[530],{"type":46,"value":172},{"type":41,"tag":137,"props":532,"children":533},{"style":144},[534],{"type":46,"value":341},{"type":41,"tag":137,"props":536,"children":537},{"style":344},[538],{"type":46,"value":347},{"type":41,"tag":137,"props":540,"children":541},{"style":144},[542],{"type":46,"value":352},{"type":41,"tag":137,"props":544,"children":545},{"style":344},[546],{"type":46,"value":357},{"type":41,"tag":137,"props":548,"children":549},{"style":144},[550],{"type":46,"value":362},{"type":41,"tag":137,"props":552,"children":554},{"class":139,"line":553},8,[555,559,564,568,572,577,581,585,589,593,597,601,605,609,613,617,621,625,629,633,637,641],{"type":41,"tag":137,"props":556,"children":557},{"style":144},[558],{"type":46,"value":264},{"type":41,"tag":137,"props":560,"children":561},{"style":267},[562],{"type":46,"value":563},"node_capacity",{"type":41,"tag":137,"props":565,"children":566},{"style":144},[567],{"type":46,"value":167},{"type":41,"tag":137,"props":569,"children":570},{"style":144},[571],{"type":46,"value":172},{"type":41,"tag":137,"props":573,"children":574},{"style":144},[575],{"type":46,"value":576},"         {",{"type":41,"tag":137,"props":578,"children":579},{"style":144},[580],{"type":46,"value":177},{"type":41,"tag":137,"props":582,"children":583},{"style":290},[584],{"type":46,"value":293},{"type":41,"tag":137,"props":586,"children":587},{"style":144},[588],{"type":46,"value":167},{"type":41,"tag":137,"props":590,"children":591},{"style":144},[592],{"type":46,"value":172},{"type":41,"tag":137,"props":594,"children":595},{"style":144},[596],{"type":46,"value":177},{"type":41,"tag":137,"props":598,"children":599},{"style":180},[600],{"type":46,"value":310},{"type":41,"tag":137,"props":602,"children":603},{"style":144},[604],{"type":46,"value":167},{"type":41,"tag":137,"props":606,"children":607},{"style":144},[608],{"type":46,"value":319},{"type":41,"tag":137,"props":610,"children":611},{"style":144},[612],{"type":46,"value":177},{"type":41,"tag":137,"props":614,"children":615},{"style":290},[616],{"type":46,"value":328},{"type":41,"tag":137,"props":618,"children":619},{"style":144},[620],{"type":46,"value":167},{"type":41,"tag":137,"props":622,"children":623},{"style":144},[624],{"type":46,"value":172},{"type":41,"tag":137,"props":626,"children":627},{"style":144},[628],{"type":46,"value":341},{"type":41,"tag":137,"props":630,"children":631},{"style":344},[632],{"type":46,"value":347},{"type":41,"tag":137,"props":634,"children":635},{"style":144},[636],{"type":46,"value":352},{"type":41,"tag":137,"props":638,"children":639},{"style":344},[640],{"type":46,"value":357},{"type":41,"tag":137,"props":642,"children":643},{"style":144},[644],{"type":46,"value":362},{"type":41,"tag":137,"props":646,"children":648},{"class":139,"line":647},9,[649,653,658,662,666,671,675,679,683,687,691,695,699,703,707,711,715,719,723,727,731,735],{"type":41,"tag":137,"props":650,"children":651},{"style":144},[652],{"type":46,"value":264},{"type":41,"tag":137,"props":654,"children":655},{"style":267},[656],{"type":46,"value":657},"pdb_drain",{"type":41,"tag":137,"props":659,"children":660},{"style":144},[661],{"type":46,"value":167},{"type":41,"tag":137,"props":663,"children":664},{"style":144},[665],{"type":46,"value":172},{"type":41,"tag":137,"props":667,"children":668},{"style":144},[669],{"type":46,"value":670},"             {",{"type":41,"tag":137,"props":672,"children":673},{"style":144},[674],{"type":46,"value":177},{"type":41,"tag":137,"props":676,"children":677},{"style":290},[678],{"type":46,"value":293},{"type":41,"tag":137,"props":680,"children":681},{"style":144},[682],{"type":46,"value":167},{"type":41,"tag":137,"props":684,"children":685},{"style":144},[686],{"type":46,"value":172},{"type":41,"tag":137,"props":688,"children":689},{"style":144},[690],{"type":46,"value":177},{"type":41,"tag":137,"props":692,"children":693},{"style":180},[694],{"type":46,"value":310},{"type":41,"tag":137,"props":696,"children":697},{"style":144},[698],{"type":46,"value":167},{"type":41,"tag":137,"props":700,"children":701},{"style":144},[702],{"type":46,"value":319},{"type":41,"tag":137,"props":704,"children":705},{"style":144},[706],{"type":46,"value":177},{"type":41,"tag":137,"props":708,"children":709},{"style":290},[710],{"type":46,"value":328},{"type":41,"tag":137,"props":712,"children":713},{"style":144},[714],{"type":46,"value":167},{"type":41,"tag":137,"props":716,"children":717},{"style":144},[718],{"type":46,"value":172},{"type":41,"tag":137,"props":720,"children":721},{"style":144},[722],{"type":46,"value":341},{"type":41,"tag":137,"props":724,"children":725},{"style":344},[726],{"type":46,"value":347},{"type":41,"tag":137,"props":728,"children":729},{"style":144},[730],{"type":46,"value":352},{"type":41,"tag":137,"props":732,"children":733},{"style":344},[734],{"type":46,"value":357},{"type":41,"tag":137,"props":736,"children":737},{"style":144},[738],{"type":46,"value":362},{"type":41,"tag":137,"props":740,"children":742},{"class":139,"line":741},10,[743,747,752,756,760,765,769,773,777,781,785,789,793,797,801,805,809,813,817,821,825,829],{"type":41,"tag":137,"props":744,"children":745},{"style":144},[746],{"type":46,"value":264},{"type":41,"tag":137,"props":748,"children":749},{"style":267},[750],{"type":46,"value":751},"etcd_health",{"type":41,"tag":137,"props":753,"children":754},{"style":144},[755],{"type":46,"value":167},{"type":41,"tag":137,"props":757,"children":758},{"style":144},[759],{"type":46,"value":172},{"type":41,"tag":137,"props":761,"children":762},{"style":144},[763],{"type":46,"value":764},"           {",{"type":41,"tag":137,"props":766,"children":767},{"style":144},[768],{"type":46,"value":177},{"type":41,"tag":137,"props":770,"children":771},{"style":290},[772],{"type":46,"value":293},{"type":41,"tag":137,"props":774,"children":775},{"style":144},[776],{"type":46,"value":167},{"type":41,"tag":137,"props":778,"children":779},{"style":144},[780],{"type":46,"value":172},{"type":41,"tag":137,"props":782,"children":783},{"style":144},[784],{"type":46,"value":177},{"type":41,"tag":137,"props":786,"children":787},{"style":180},[788],{"type":46,"value":310},{"type":41,"tag":137,"props":790,"children":791},{"style":144},[792],{"type":46,"value":167},{"type":41,"tag":137,"props":794,"children":795},{"style":144},[796],{"type":46,"value":319},{"type":41,"tag":137,"props":798,"children":799},{"style":144},[800],{"type":46,"value":177},{"type":41,"tag":137,"props":802,"children":803},{"style":290},[804],{"type":46,"value":328},{"type":41,"tag":137,"props":806,"children":807},{"style":144},[808],{"type":46,"value":167},{"type":41,"tag":137,"props":810,"children":811},{"style":144},[812],{"type":46,"value":172},{"type":41,"tag":137,"props":814,"children":815},{"style":144},[816],{"type":46,"value":341},{"type":41,"tag":137,"props":818,"children":819},{"style":344},[820],{"type":46,"value":347},{"type":41,"tag":137,"props":822,"children":823},{"style":144},[824],{"type":46,"value":352},{"type":41,"tag":137,"props":826,"children":827},{"style":344},[828],{"type":46,"value":357},{"type":41,"tag":137,"props":830,"children":831},{"style":144},[832],{"type":46,"value":362},{"type":41,"tag":137,"props":834,"children":836},{"class":139,"line":835},11,[837,841,846,850,854,859,863,867,871,875,879,883,887,891,895,899,903,907,911,915,919,923],{"type":41,"tag":137,"props":838,"children":839},{"style":144},[840],{"type":46,"value":264},{"type":41,"tag":137,"props":842,"children":843},{"style":267},[844],{"type":46,"value":845},"network",{"type":41,"tag":137,"props":847,"children":848},{"style":144},[849],{"type":46,"value":167},{"type":41,"tag":137,"props":851,"children":852},{"style":144},[853],{"type":46,"value":172},{"type":41,"tag":137,"props":855,"children":856},{"style":144},[857],{"type":46,"value":858},"               {",{"type":41,"tag":137,"props":860,"children":861},{"style":144},[862],{"type":46,"value":177},{"type":41,"tag":137,"props":864,"children":865},{"style":290},[866],{"type":46,"value":293},{"type":41,"tag":137,"props":868,"children":869},{"style":144},[870],{"type":46,"value":167},{"type":41,"tag":137,"props":872,"children":873},{"style":144},[874],{"type":46,"value":172},{"type":41,"tag":137,"props":876,"children":877},{"style":144},[878],{"type":46,"value":177},{"type":41,"tag":137,"props":880,"children":881},{"style":180},[882],{"type":46,"value":310},{"type":41,"tag":137,"props":884,"children":885},{"style":144},[886],{"type":46,"value":167},{"type":41,"tag":137,"props":888,"children":889},{"style":144},[890],{"type":46,"value":319},{"type":41,"tag":137,"props":892,"children":893},{"style":144},[894],{"type":46,"value":177},{"type":41,"tag":137,"props":896,"children":897},{"style":290},[898],{"type":46,"value":328},{"type":41,"tag":137,"props":900,"children":901},{"style":144},[902],{"type":46,"value":167},{"type":41,"tag":137,"props":904,"children":905},{"style":144},[906],{"type":46,"value":172},{"type":41,"tag":137,"props":908,"children":909},{"style":144},[910],{"type":46,"value":341},{"type":41,"tag":137,"props":912,"children":913},{"style":344},[914],{"type":46,"value":347},{"type":41,"tag":137,"props":916,"children":917},{"style":144},[918],{"type":46,"value":352},{"type":41,"tag":137,"props":920,"children":921},{"style":344},[922],{"type":46,"value":357},{"type":41,"tag":137,"props":924,"children":925},{"style":144},[926],{"type":46,"value":362},{"type":41,"tag":137,"props":928,"children":930},{"class":139,"line":929},12,[931,935,940,944,948,953,957,961,965,969,973,977,981,985,989,993,997,1001,1005,1009,1013,1017],{"type":41,"tag":137,"props":932,"children":933},{"style":144},[934],{"type":46,"value":264},{"type":41,"tag":137,"props":936,"children":937},{"style":267},[938],{"type":46,"value":939},"crd_compat",{"type":41,"tag":137,"props":941,"children":942},{"style":144},[943],{"type":46,"value":167},{"type":41,"tag":137,"props":945,"children":946},{"style":144},[947],{"type":46,"value":172},{"type":41,"tag":137,"props":949,"children":950},{"style":144},[951],{"type":46,"value":952},"            {",{"type":41,"tag":137,"props":954,"children":955},{"style":144},[956],{"type":46,"value":177},{"type":41,"tag":137,"props":958,"children":959},{"style":290},[960],{"type":46,"value":293},{"type":41,"tag":137,"props":962,"children":963},{"style":144},[964],{"type":46,"value":167},{"type":41,"tag":137,"props":966,"children":967},{"style":144},[968],{"type":46,"value":172},{"type":41,"tag":137,"props":970,"children":971},{"style":144},[972],{"type":46,"value":177},{"type":41,"tag":137,"props":974,"children":975},{"style":180},[976],{"type":46,"value":310},{"type":41,"tag":137,"props":978,"children":979},{"style":144},[980],{"type":46,"value":167},{"type":41,"tag":137,"props":982,"children":983},{"style":144},[984],{"type":46,"value":319},{"type":41,"tag":137,"props":986,"children":987},{"style":144},[988],{"type":46,"value":177},{"type":41,"tag":137,"props":990,"children":991},{"style":290},[992],{"type":46,"value":328},{"type":41,"tag":137,"props":994,"children":995},{"style":144},[996],{"type":46,"value":167},{"type":41,"tag":137,"props":998,"children":999},{"style":144},[1000],{"type":46,"value":172},{"type":41,"tag":137,"props":1002,"children":1003},{"style":144},[1004],{"type":46,"value":341},{"type":41,"tag":137,"props":1006,"children":1007},{"style":344},[1008],{"type":46,"value":347},{"type":41,"tag":137,"props":1010,"children":1011},{"style":144},[1012],{"type":46,"value":352},{"type":41,"tag":137,"props":1014,"children":1015},{"style":344},[1016],{"type":46,"value":357},{"type":41,"tag":137,"props":1018,"children":1019},{"style":144},[1020],{"type":46,"value":362},{"type":41,"tag":137,"props":1022,"children":1024},{"class":139,"line":1023},13,[1025,1029,1034,1038,1042,1046,1050,1054,1058,1062,1066,1070,1074,1078,1082,1086,1090,1094,1098,1102,1106,1110],{"type":41,"tag":137,"props":1026,"children":1027},{"style":144},[1028],{"type":46,"value":264},{"type":41,"tag":137,"props":1030,"children":1031},{"style":267},[1032],{"type":46,"value":1033},"olm_operator_lifecycle",{"type":41,"tag":137,"props":1035,"children":1036},{"style":144},[1037],{"type":46,"value":167},{"type":41,"tag":137,"props":1039,"children":1040},{"style":144},[1041],{"type":46,"value":172},{"type":41,"tag":137,"props":1043,"children":1044},{"style":144},[1045],{"type":46,"value":341},{"type":41,"tag":137,"props":1047,"children":1048},{"style":144},[1049],{"type":46,"value":177},{"type":41,"tag":137,"props":1051,"children":1052},{"style":290},[1053],{"type":46,"value":293},{"type":41,"tag":137,"props":1055,"children":1056},{"style":144},[1057],{"type":46,"value":167},{"type":41,"tag":137,"props":1059,"children":1060},{"style":144},[1061],{"type":46,"value":172},{"type":41,"tag":137,"props":1063,"children":1064},{"style":144},[1065],{"type":46,"value":177},{"type":41,"tag":137,"props":1067,"children":1068},{"style":180},[1069],{"type":46,"value":310},{"type":41,"tag":137,"props":1071,"children":1072},{"style":144},[1073],{"type":46,"value":167},{"type":41,"tag":137,"props":1075,"children":1076},{"style":144},[1077],{"type":46,"value":319},{"type":41,"tag":137,"props":1079,"children":1080},{"style":144},[1081],{"type":46,"value":177},{"type":41,"tag":137,"props":1083,"children":1084},{"style":290},[1085],{"type":46,"value":328},{"type":41,"tag":137,"props":1087,"children":1088},{"style":144},[1089],{"type":46,"value":167},{"type":41,"tag":137,"props":1091,"children":1092},{"style":144},[1093],{"type":46,"value":172},{"type":41,"tag":137,"props":1095,"children":1096},{"style":144},[1097],{"type":46,"value":341},{"type":41,"tag":137,"props":1099,"children":1100},{"style":344},[1101],{"type":46,"value":347},{"type":41,"tag":137,"props":1103,"children":1104},{"style":144},[1105],{"type":46,"value":352},{"type":41,"tag":137,"props":1107,"children":1108},{"style":344},[1109],{"type":46,"value":357},{"type":41,"tag":137,"props":1111,"children":1112},{"style":144},[1113],{"type":46,"value":1114},"}\n",{"type":41,"tag":137,"props":1116,"children":1118},{"class":139,"line":1117},14,[1119],{"type":41,"tag":137,"props":1120,"children":1121},{"style":144},[1122],{"type":46,"value":1123},"  }\n",{"type":41,"tag":137,"props":1125,"children":1127},{"class":139,"line":1126},15,[1128],{"type":41,"tag":137,"props":1129,"children":1130},{"style":144},[1131],{"type":46,"value":1114},{"type":41,"tag":56,"props":1133,"children":1134},{},[1135,1137,1142,1144,1149,1151,1157,1159,1164],{"type":46,"value":1136},"Each check contains ",{"type":41,"tag":109,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":46,"value":293},{"type":46,"value":1143}," (",{"type":41,"tag":109,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":46,"value":310},{"type":46,"value":1150}," or ",{"type":41,"tag":109,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":46,"value":1156},"error",{"type":46,"value":1158},") and check-specific data\nwith a ",{"type":41,"tag":109,"props":1160,"children":1162},{"className":1161},[],[1163],{"type":46,"value":328},{"type":46,"value":1165}," section for quick parsing.",{"type":41,"tag":49,"props":1167,"children":1169},{"id":1168},"evaluation",[1170],{"type":46,"value":1171},"Evaluation",{"type":41,"tag":1173,"props":1174,"children":1176},"h3",{"id":1175},"parse-readiness-data",[1177],{"type":46,"value":1178},"Parse readiness data",{"type":41,"tag":56,"props":1180,"children":1181},{},[1182,1184,1189,1191,1196,1198,1203],{"type":46,"value":1183},"Extract the JSON from the proposal request.\nCount checks with ",{"type":41,"tag":109,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":46,"value":293},{"type":46,"value":1190}," ",{"type":41,"tag":109,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":46,"value":310},{"type":46,"value":1197}," vs ",{"type":41,"tag":109,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":46,"value":1156},{"type":46,"value":1204}," for completeness.",{"type":41,"tag":1173,"props":1206,"children":1208},{"id":1207},"verify-data-completeness",[1209],{"type":46,"value":1210},"Verify data completeness",{"type":41,"tag":56,"props":1212,"children":1213},{},[1214,1216,1221,1222,1227],{"type":46,"value":1215},"Any check with ",{"type":41,"tag":109,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":46,"value":293},{"type":46,"value":1190},{"type":41,"tag":109,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":46,"value":1156},{"type":46,"value":1228}," represents a gap in visibility.\nNote incomplete areas — they reduce confidence.",{"type":41,"tag":1173,"props":1230,"children":1232},{"id":1231},"evaluate-findings-in-detail",[1233],{"type":46,"value":1234},"Evaluate findings in detail",{"type":41,"tag":56,"props":1236,"children":1237},{},[1238],{"type":46,"value":1239},"If the system prompt includes organization-specific policy (thresholds, scheduling preferences, risk tolerance), apply those constraints.\nOtherwise use sensible defaults.\nWalk through each check's summary and detail data:",{"type":41,"tag":78,"props":1241,"children":1242},{},[1243,1248,1253,1258],{"type":41,"tag":82,"props":1244,"children":1245},{},[1246],{"type":46,"value":1247},"Compare numeric thresholds (node headroom, etcd backup age)",{"type":41,"tag":82,"props":1249,"children":1250},{},[1251],{"type":46,"value":1252},"Evaluate conditional update risks against cluster state",{"type":41,"tag":82,"props":1254,"children":1255},{},[1256],{"type":46,"value":1257},"Identify compounding risks (e.g., paused MCP + cert expiry)",{"type":41,"tag":82,"props":1259,"children":1260},{},[1261],{"type":46,"value":1262},"Estimate update duration (~10 min\u002Fnode)",{"type":41,"tag":1173,"props":1264,"children":1266},{"id":1265},"classify-findings",[1267],{"type":46,"value":1268},"Classify findings",{"type":41,"tag":56,"props":1270,"children":1271},{},[1272],{"type":46,"value":1273},"Assign each finding a severity per the classification table.",{"type":41,"tag":1275,"props":1276,"children":1277},"table",{},[1278,1302],{"type":41,"tag":1279,"props":1280,"children":1281},"thead",{},[1282],{"type":41,"tag":1283,"props":1284,"children":1285},"tr",{},[1286,1292,1297],{"type":41,"tag":1287,"props":1288,"children":1289},"th",{},[1290],{"type":46,"value":1291},"Check",{"type":41,"tag":1287,"props":1293,"children":1294},{},[1295],{"type":46,"value":1296},"Blocker if...",{"type":41,"tag":1287,"props":1298,"children":1299},{},[1300],{"type":46,"value":1301},"Warning if...",{"type":41,"tag":1303,"props":1304,"children":1305},"tbody",{},[1306,1325,1357,1375,1393,1411,1429,1447,1465,1483],{"type":41,"tag":1283,"props":1307,"children":1308},{},[1309,1315,1320],{"type":41,"tag":1310,"props":1311,"children":1312},"td",{},[1313],{"type":46,"value":1314},"Cluster conditions",{"type":41,"tag":1310,"props":1316,"children":1317},{},[1318],{"type":46,"value":1319},"Upgradeable=False (non-z-stream)",{"type":41,"tag":1310,"props":1321,"children":1322},{},[1323],{"type":46,"value":1324},"Update already in progress",{"type":41,"tag":1283,"props":1326,"children":1327},{},[1328,1333,1345],{"type":41,"tag":1310,"props":1329,"children":1330},{},[1331],{"type":46,"value":1332},"API deprecations",{"type":41,"tag":1310,"props":1334,"children":1335},{},[1336,1338,1343],{"type":46,"value":1337},"Workloads use APIs ",{"type":41,"tag":96,"props":1339,"children":1340},{},[1341],{"type":46,"value":1342},"removed",{"type":46,"value":1344}," in target",{"type":41,"tag":1310,"props":1346,"children":1347},{},[1348,1350,1355],{"type":46,"value":1349},"Workloads use ",{"type":41,"tag":96,"props":1351,"children":1352},{},[1353],{"type":46,"value":1354},"deprecated",{"type":46,"value":1356}," APIs",{"type":41,"tag":1283,"props":1358,"children":1359},{},[1360,1365,1370],{"type":41,"tag":1310,"props":1361,"children":1362},{},[1363],{"type":46,"value":1364},"Operator health",{"type":41,"tag":1310,"props":1366,"children":1367},{},[1368],{"type":46,"value":1369},"Any operator has Upgradeable=False",{"type":41,"tag":1310,"props":1371,"children":1372},{},[1373],{"type":46,"value":1374},"Any operator is Degraded=True",{"type":41,"tag":1283,"props":1376,"children":1377},{},[1378,1383,1388],{"type":41,"tag":1310,"props":1379,"children":1380},{},[1381],{"type":46,"value":1382},"MachineConfigPool",{"type":41,"tag":1310,"props":1384,"children":1385},{},[1386],{"type":46,"value":1387},"Any MCP paused or degraded",{"type":41,"tag":1310,"props":1389,"children":1390},{},[1391],{"type":46,"value":1392},"MCP updating or not all machines ready",{"type":41,"tag":1283,"props":1394,"children":1395},{},[1396,1401,1406],{"type":41,"tag":1310,"props":1397,"children":1398},{},[1399],{"type":46,"value":1400},"Node capacity",{"type":41,"tag":1310,"props":1402,"children":1403},{},[1404],{"type":46,"value":1405},"Headroom \u003C 20%",{"type":41,"tag":1310,"props":1407,"children":1408},{},[1409],{"type":46,"value":1410},"Headroom \u003C 40%",{"type":41,"tag":1283,"props":1412,"children":1413},{},[1414,1419,1424],{"type":41,"tag":1310,"props":1415,"children":1416},{},[1417],{"type":46,"value":1418},"PDB config",{"type":41,"tag":1310,"props":1420,"children":1421},{},[1422],{"type":46,"value":1423},"PDB blocks ALL replicas from draining",{"type":41,"tag":1310,"props":1425,"children":1426},{},[1427],{"type":46,"value":1428},"PDB has maxUnavailable: 0",{"type":41,"tag":1283,"props":1430,"children":1431},{},[1432,1437,1442],{"type":41,"tag":1310,"props":1433,"children":1434},{},[1435],{"type":46,"value":1436},"etcd health",{"type":41,"tag":1310,"props":1438,"children":1439},{},[1440],{"type":46,"value":1441},"Any member unhealthy",{"type":41,"tag":1310,"props":1443,"children":1444},{},[1445],{"type":46,"value":1446},"No recent backup (within 24h)",{"type":41,"tag":1283,"props":1448,"children":1449},{},[1450,1455,1460],{"type":41,"tag":1310,"props":1451,"children":1452},{},[1453],{"type":46,"value":1454},"Network plugin",{"type":41,"tag":1310,"props":1456,"children":1457},{},[1458],{"type":46,"value":1459},"SDN in use and target requires OVN (4.17+)",{"type":41,"tag":1310,"props":1461,"children":1462},{},[1463],{"type":46,"value":1464},"Using deprecated SDN (\u003C 4.17)",{"type":41,"tag":1283,"props":1466,"children":1467},{},[1468,1473,1478],{"type":41,"tag":1310,"props":1469,"children":1470},{},[1471],{"type":46,"value":1472},"CRD compatibility",{"type":41,"tag":1310,"props":1474,"children":1475},{},[1476],{"type":46,"value":1477},"Stored version not served; operator maxOpenShiftVersion \u003C target",{"type":41,"tag":1310,"props":1479,"children":1480},{},[1481],{"type":46,"value":1482},"Deprecated versions still served",{"type":41,"tag":1283,"props":1484,"children":1485},{},[1486,1491,1496],{"type":41,"tag":1310,"props":1487,"children":1488},{},[1489],{"type":46,"value":1490},"OLM operator lifecycle",{"type":41,"tag":1310,"props":1492,"children":1493},{},[1494],{"type":46,"value":1495},"Installed operator incompatible with target OCP; operator product EOL",{"type":41,"tag":1310,"props":1497,"children":1498},{},[1499],{"type":46,"value":1500},"Operator has pending update; operator product in Maintenance Support",{"type":41,"tag":56,"props":1502,"children":1503},{},[1504],{"type":46,"value":1505},"For other checks, treat an issue as a blocker if would cause data loss, a performance regression, or a failed update.\nTreat the issue as a warning if would cause temporary disruption or slow updates.",{"type":41,"tag":1507,"props":1508,"children":1510},"h4",{"id":1509},"investigate-with-other-skills",[1511],{"type":46,"value":1512},"Investigate with other skills",{"type":41,"tag":56,"props":1514,"children":1515},{},[1516],{"type":46,"value":1517},"If additional information or context is needed to classify a finding, these skills may be useful:",{"type":41,"tag":78,"props":1519,"children":1520},{},[1521,1535,1549,1563],{"type":41,"tag":82,"props":1522,"children":1523},{},[1524,1533],{"type":41,"tag":96,"props":1525,"children":1526},{},[1527],{"type":41,"tag":109,"props":1528,"children":1530},{"className":1529},[],[1531],{"type":46,"value":1532},"openshift-docs",{"type":46,"value":1534}," — Read official OpenShift update docs for version-specific\nprocedures and breaking changes.",{"type":41,"tag":82,"props":1536,"children":1537},{},[1538,1547],{"type":41,"tag":96,"props":1539,"children":1540},{},[1541],{"type":41,"tag":109,"props":1542,"children":1544},{"className":1543},[],[1545],{"type":46,"value":1546},"prometheus",{"type":46,"value":1548}," — Query cluster metrics for trend analysis (etcd latency,\nCPU headroom, firing alerts).",{"type":41,"tag":82,"props":1550,"children":1551},{},[1552,1561],{"type":41,"tag":96,"props":1553,"children":1554},{},[1555],{"type":41,"tag":109,"props":1556,"children":1558},{"className":1557},[],[1559],{"type":46,"value":1560},"jira",{"type":46,"value":1562}," — Search Red Hat Jira for bugs and known issues affecting the target version.",{"type":41,"tag":82,"props":1564,"children":1565},{},[1566,1575,1577,1583,1585,1590,1592,1598],{"type":41,"tag":96,"props":1567,"children":1568},{},[1569],{"type":41,"tag":109,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":46,"value":1574},"product-lifecycle",{"type":46,"value":1576}," — Query Red Hat Product Life Cycle API to check\nsupport status and OCP compatibility for installed operators. Use the operator's\n",{"type":41,"tag":109,"props":1578,"children":1580},{"className":1579},[],[1581],{"type":46,"value":1582},"package",{"type":46,"value":1584}," name from OLM readiness data to look up entries via the ",{"type":41,"tag":109,"props":1586,"children":1588},{"className":1587},[],[1589],{"type":46,"value":1582},{"type":46,"value":1591},"\nfield (exact match). Flag operators whose product version is End of life or whose\n",{"type":41,"tag":109,"props":1593,"children":1595},{"className":1594},[],[1596],{"type":46,"value":1597},"openshift_compatibility",{"type":46,"value":1599}," does not include the target OCP version.",{"type":41,"tag":1173,"props":1601,"children":1603},{"id":1602},"classify-overall-recommendation",[1604],{"type":46,"value":1605},"Classify overall recommendation",{"type":41,"tag":56,"props":1607,"children":1608},{},[1609],{"type":46,"value":1610},"Aggregate finding classification, and and make a decision on the overall assessment:",{"type":41,"tag":78,"props":1612,"children":1613},{},[1614,1619,1624,1629],{"type":41,"tag":82,"props":1615,"children":1616},{},[1617],{"type":46,"value":1618},"escalate  — insufficient data for confident assessment.",{"type":41,"tag":82,"props":1620,"children":1621},{},[1622],{"type":46,"value":1623},"block     — findings must be resolved before update.",{"type":41,"tag":82,"props":1625,"children":1626},{},[1627],{"type":46,"value":1628},"warn — findings exist but manageable with prerequisites.",{"type":41,"tag":82,"props":1630,"children":1631},{},[1632],{"type":46,"value":1633},"recommend — all checks pass within acceptable thresholds.",{"type":41,"tag":1275,"props":1635,"children":1636},{},[1637,1658],{"type":41,"tag":1279,"props":1638,"children":1639},{},[1640],{"type":41,"tag":1283,"props":1641,"children":1642},{},[1643,1648,1653],{"type":41,"tag":1287,"props":1644,"children":1645},{},[1646],{"type":46,"value":1647},"Blockers",{"type":41,"tag":1287,"props":1649,"children":1650},{},[1651],{"type":46,"value":1652},"Warnings",{"type":41,"tag":1287,"props":1654,"children":1655},{},[1656],{"type":46,"value":1657},"Decision",{"type":41,"tag":1303,"props":1659,"children":1660},{},[1661,1683,1704,1725],{"type":41,"tag":1283,"props":1662,"children":1663},{},[1664,1669,1674],{"type":41,"tag":1310,"props":1665,"children":1666},{},[1667],{"type":46,"value":1668},"Unable to assess",{"type":41,"tag":1310,"props":1670,"children":1671},{},[1672],{"type":46,"value":1673},"any",{"type":41,"tag":1310,"props":1675,"children":1676},{},[1677],{"type":41,"tag":109,"props":1678,"children":1680},{"className":1679},[],[1681],{"type":46,"value":1682},"escalate",{"type":41,"tag":1283,"props":1684,"children":1685},{},[1686,1691,1695],{"type":41,"tag":1310,"props":1687,"children":1688},{},[1689],{"type":46,"value":1690},"1+",{"type":41,"tag":1310,"props":1692,"children":1693},{},[1694],{"type":46,"value":1673},{"type":41,"tag":1310,"props":1696,"children":1697},{},[1698],{"type":41,"tag":109,"props":1699,"children":1701},{"className":1700},[],[1702],{"type":46,"value":1703},"block",{"type":41,"tag":1283,"props":1705,"children":1706},{},[1707,1712,1716],{"type":41,"tag":1310,"props":1708,"children":1709},{},[1710],{"type":46,"value":1711},"0",{"type":41,"tag":1310,"props":1713,"children":1714},{},[1715],{"type":46,"value":1690},{"type":41,"tag":1310,"props":1717,"children":1718},{},[1719],{"type":41,"tag":109,"props":1720,"children":1722},{"className":1721},[],[1723],{"type":46,"value":1724},"warn",{"type":41,"tag":1283,"props":1726,"children":1727},{},[1728,1732,1736],{"type":41,"tag":1310,"props":1729,"children":1730},{},[1731],{"type":46,"value":1711},{"type":41,"tag":1310,"props":1733,"children":1734},{},[1735],{"type":46,"value":1711},{"type":41,"tag":1310,"props":1737,"children":1738},{},[1739],{"type":41,"tag":109,"props":1740,"children":1742},{"className":1741},[],[1743],{"type":46,"value":1744},"recommend",{"type":41,"tag":1173,"props":1746,"children":1748},{"id":1747},"produce-a-structured-risk-report",[1749],{"type":46,"value":1750},"Produce a structured risk report",{"type":41,"tag":56,"props":1752,"children":1753},{},[1754,1756,1762],{"type":46,"value":1755},"The output schema is enforced by the OlsAgent CR's ",{"type":41,"tag":109,"props":1757,"children":1759},{"className":1758},[],[1760],{"type":46,"value":1761},"outputSchema",{"type":46,"value":1763}," field —\nthe operator handles structured output compliance via the LLM API.",{"type":41,"tag":49,"props":1765,"children":1767},{"id":1766},"failure-modes-what-not-to-do",[1768],{"type":46,"value":1769},"Failure Modes — What NOT to Do",{"type":41,"tag":1771,"props":1772,"children":1773},"ol",{},[1774,1784,1794,1804,1814,1832,1842],{"type":41,"tag":82,"props":1775,"children":1776},{},[1777,1782],{"type":41,"tag":96,"props":1778,"children":1779},{},[1780],{"type":46,"value":1781},"Never recommend updating without analyzing the readiness data.",{"type":46,"value":1783}," The JSON\nin the request is the source of truth.",{"type":41,"tag":82,"props":1785,"children":1786},{},[1787,1792],{"type":41,"tag":96,"props":1788,"children":1789},{},[1790],{"type":46,"value":1791},"Never dismiss conditional update risks.",{"type":46,"value":1793}," If the update path is conditional,\nevaluate each risk against the cluster.",{"type":41,"tag":82,"props":1795,"children":1796},{},[1797,1802],{"type":41,"tag":96,"props":1798,"children":1799},{},[1800],{"type":46,"value":1801},"Never skip the API deprecation check.",{"type":46,"value":1803}," Workloads using removed APIs will\nbreak after the update.",{"type":41,"tag":82,"props":1805,"children":1806},{},[1807,1812],{"type":41,"tag":96,"props":1808,"children":1809},{},[1810],{"type":46,"value":1811},"Never assume etcd is healthy.",{"type":46,"value":1813}," Always check member health in the readiness data.",{"type":41,"tag":82,"props":1815,"children":1816},{},[1817,1822,1824,1830],{"type":41,"tag":96,"props":1818,"children":1819},{},[1820],{"type":46,"value":1821},"Never fabricate Jira issue keys, KB article IDs, or CVE numbers.",{"type":46,"value":1823}," Use the\n",{"type":41,"tag":109,"props":1825,"children":1827},{"className":1826},[],[1828],{"type":46,"value":1829},"redhat-support",{"type":46,"value":1831}," skill to get real data.",{"type":41,"tag":82,"props":1833,"children":1834},{},[1835,1840],{"type":41,"tag":96,"props":1836,"children":1837},{},[1838],{"type":46,"value":1839},"Never recommend skipping an update version",{"type":46,"value":1841}," unless the readiness data shows\nthat path exists.",{"type":41,"tag":82,"props":1843,"children":1844},{},[1845,1850],{"type":41,"tag":96,"props":1846,"children":1847},{},[1848],{"type":46,"value":1849},"Never recommend force-updating.",{"type":46,"value":1851}," If the standard path is blocked, report it.",{"type":41,"tag":1853,"props":1854,"children":1855},"style",{},[1856],{"type":46,"value":1857},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1859,"total":647},[1860,1877,1890,1903,1916,1929,1936,1947,1956],{"slug":1861,"name":1861,"fn":1862,"description":1863,"org":1864,"tags":1865,"stars":1874,"repoUrl":1875,"updatedAt":1876},"degraded-operator-recovery","recover degraded OpenShift cluster operators","Troubleshoot ClusterOperator in Degraded, Unavailable, or not Progressing state. Use when operator status shows error conditions, reconciliation failures, or degraded health checks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1866,1869,1870,1871],{"name":1867,"slug":1868,"type":15},"Debugging","debugging",{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":1872,"slug":1873,"type":15},"SRE","sre",70,"https:\u002F\u002Fgithub.com\u002Fopenshift\u002Flightspeed-service","2026-04-06T18:43:30.354728",{"slug":1878,"name":1878,"fn":1879,"description":1880,"org":1881,"tags":1882,"stars":1874,"repoUrl":1875,"updatedAt":1889},"namespace-troubleshooting","troubleshoot OpenShift namespace and RBAC issues","Troubleshoot namespace stuck in Terminating state, ResourceQuota exhaustion, or RBAC permission denied errors. Use when resources cannot be created or forbidden errors occur.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1883,1886,1887,1888],{"name":1884,"slug":1885,"type":15},"Access Control","access-control",{"name":1867,"slug":1868,"type":15},{"name":20,"slug":8,"type":15},{"name":1872,"slug":1873,"type":15},"2026-04-06T18:43:29.107881",{"slug":1891,"name":1891,"fn":1892,"description":1893,"org":1894,"tags":1895,"stars":1874,"repoUrl":1875,"updatedAt":1902},"node-not-ready","troubleshoot OpenShift node status issues","Troubleshoot NotReady or SchedulingDisabled node status. Use when a node is down, unschedulable, or needs to be drained and restored.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1896,1897,1900,1901],{"name":1867,"slug":1868,"type":15},{"name":1898,"slug":1899,"type":15},"Engineering","engineering",{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-04-06T18:43:26.607462",{"slug":1904,"name":1904,"fn":1905,"description":1906,"org":1907,"tags":1908,"stars":1874,"repoUrl":1875,"updatedAt":1915},"pod-failure-diagnosis","diagnose OpenShift pod failure states","Troubleshoot CrashLoopBackOff, ImagePullBackOff, Pending, Error, or OOMKilled status. Use when a workload keeps restarting, fails to start, or is crash-looping.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1909,1910,1913,1914],{"name":1867,"slug":1868,"type":15},{"name":1911,"slug":1912,"type":15},"Kubernetes","kubernetes",{"name":20,"slug":8,"type":15},{"name":1872,"slug":1873,"type":15},"2026-04-06T18:43:27.866868",{"slug":1917,"name":1917,"fn":1918,"description":1919,"org":1920,"tags":1921,"stars":1874,"repoUrl":1875,"updatedAt":1928},"route-ingress-troubleshooting","troubleshoot OpenShift Route and Ingress connectivity","Troubleshoot Route or Ingress connectivity failures. Use when traffic returns 502, 503, connection refused, or the endpoint is not reachable externally.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1922,1923,1926,1927],{"name":1867,"slug":1868,"type":15},{"name":1924,"slug":1925,"type":15},"Networking","networking",{"name":20,"slug":8,"type":15},{"name":1872,"slug":1873,"type":15},"2026-04-06T18:43:31.593028",{"slug":4,"name":4,"fn":5,"description":6,"org":1930,"tags":1931,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1932,1933,1934,1935],{"name":17,"slug":18,"type":15},{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":22,"slug":23,"type":15},{"slug":1937,"name":1937,"fn":1938,"description":1939,"org":1940,"tags":1941,"stars":24,"repoUrl":25,"updatedAt":1946},"kubernetes-docs","search and read Kubernetes documentation","Search and read Kubernetes documentation in markdown format. Use when the user asks about Kubernetes concepts, tasks, API reference, kubectl, or any upstream k8s topic — including pods, deployments, services, RBAC, networking, storage, or scheduling.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1942,1945],{"name":1943,"slug":1944,"type":15},"Documentation","documentation",{"name":1911,"slug":1912,"type":15},"2026-05-12T06:07:15.393562",{"slug":1532,"name":1532,"fn":1948,"description":1949,"org":1950,"tags":1951,"stars":24,"repoUrl":25,"updatedAt":1955},"search and read OpenShift documentation","Search and read OpenShift Container Platform documentation in markdown format. Use when the user asks about OpenShift features, configuration, installation, troubleshooting, or any OCP-specific topic — including operators, routes, services, oc, RBAC, networking, storage, or cluster administration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1952,1953,1954],{"name":1943,"slug":1944,"type":15},{"name":1911,"slug":1912,"type":15},{"name":20,"slug":8,"type":15},"2026-05-12T06:07:14.03809",{"slug":1574,"name":1574,"fn":1957,"description":1958,"org":1959,"tags":1960,"stars":24,"repoUrl":25,"updatedAt":1966},"query Red Hat product lifecycle data","Query Red Hat Product Life Cycle data for support phases, end-of-life dates, and OpenShift version compatibility. Use when evaluating whether installed operators or layered products are supported on a given OCP version, approaching end of life, or need upgrading before a cluster upgrade. Also use when the user asks about product support status, EOL dates, or lifecycle phases for any Red Hat product.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1961,1962,1963],{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":1964,"slug":1965,"type":15},"Reporting","reporting","2026-07-31T05:55:39.981651",{"items":1968,"total":233},[1969,1976,1981,1987],{"slug":4,"name":4,"fn":5,"description":6,"org":1970,"tags":1971,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1972,1973,1974,1975],{"name":17,"slug":18,"type":15},{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":22,"slug":23,"type":15},{"slug":1937,"name":1937,"fn":1938,"description":1939,"org":1977,"tags":1978,"stars":24,"repoUrl":25,"updatedAt":1946},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1979,1980],{"name":1943,"slug":1944,"type":15},{"name":1911,"slug":1912,"type":15},{"slug":1532,"name":1532,"fn":1948,"description":1949,"org":1982,"tags":1983,"stars":24,"repoUrl":25,"updatedAt":1955},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1984,1985,1986],{"name":1943,"slug":1944,"type":15},{"name":1911,"slug":1912,"type":15},{"name":20,"slug":8,"type":15},{"slug":1574,"name":1574,"fn":1957,"description":1958,"org":1988,"tags":1989,"stars":24,"repoUrl":25,"updatedAt":1966},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1990,1991,1992],{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":1964,"slug":1965,"type":15}]