[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openshift-product-lifecycle":3,"mdc-ounltv-key":32,"related-org-openshift-product-lifecycle":1049,"related-repo-openshift-product-lifecycle":1163},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":27,"sourceUrl":30,"mdContent":31},"product-lifecycle","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},"openshift","OpenShift (Red Hat)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenshift.png",[12,16,19],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":17,"slug":18,"type":15},"Reporting","reporting",{"name":20,"slug":8,"type":15},"OpenShift",5,"https:\u002F\u002Fgithub.com\u002Fopenshift\u002Fagentic-skills","2026-07-31T05:55:39.981651",null,16,[],{"repoUrl":22,"stars":21,"forks":25,"topics":28,"description":29},[],"OpenShift  Container Platform skills for  AI agents and OpenShift","https:\u002F\u002Fgithub.com\u002Fopenshift\u002Fagentic-skills\u002Ftree\u002FHEAD\u002Fcluster-update\u002Fproduct-lifecycle","---\nname: product-lifecycle\ndescription: 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.\n---\n\n# Red Hat Product Life Cycle\n\nQuery the Red Hat Product Life Cycle API to check support status, EOL dates, and OpenShift compatibility for Red Hat products and layered operators.\n\n## CLI Tool\n\nAll queries go through `product-lifecycle\u002Fscripts\u002Fplc_lookup.py` — a standalone\nPython 3 script with no dependencies beyond stdlib. Run with `-h` for full usage:\n\n```bash\npython3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py -h\n```\n\n### Commands\n\n#### `products` — Query products by name\n\n```bash\n# Look up a product\npython3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py products \"logging for Red Hat OpenShift\"\n\n# With OCP compatibility check\npython3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py products \"logging for Red Hat OpenShift\" --ocp 4.21\n\n# Look up OCP itself\npython3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py products \"Red Hat OpenShift Container Platform\"\n```\n\nReturns matching product versions with support status, OCP compatibility,\nand lifecycle phase dates. When `--ocp` is provided, adds `ocp_target` and\n`ocp_compatible` (true\u002Ffalse\u002Fnull) to each version entry.\n\nBe specific with product names to avoid overly broad results.\n\n#### `olm-check` — Batch check OLM operators\n\n```bash\npython3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py olm-check --ocp 4.21 \\\n  --operators '[{\"package\":\"cluster-logging\",\"version\":\"6.5.1\"},{\"package\":\"web-terminal\"}]'\n```\n\nLooks up each operator by its OLM `package` name. Each operator in the\nJSON array accepts `package` (required) and `version` (optional).\n\nReturns **one result per operator**. The shape depends on whether a\n`version` was provided:\n\n- **With version (matched):** `package`, `requested_version`, `product`,\n  `status`, `ocp_compatible`, `phases`. No `error` field.\n- **Without version (package exists):** `package`, `product`,\n  `available_versions`. No `error` field.\n- **Error:** `error` field set — explains what went wrong (package not\n  found, version not tracked). Includes `available_versions` when the\n  package exists but the version doesn't.\n\nWhen a version is provided, the tool normalizes it to major.minor\n(e.g. `1.9.0` → `1.9`) and matches against API version names.\n\nReports `lifecycle_unavailable` listing every operator whose result has `error` set.\n\n\n## Output Format\n\nAll commands output JSON.\n\n### `products` output\n\nEach product version entry includes `product`, `former_names`, `package`,\n`version`, `status`, `ocp_versions`, `ocp_compatible`, and `phases`.\n\n### `olm-check` output\n\nOne entry per operator:\n\n| Field | Description |\n|---|---|\n| `package` | OLM package name queried |\n| `requested_version` | Normalized version checked (when provided) |\n| `error` | Why data is unavailable — absent on success, set on failure |\n| `product` | Product name (on success) |\n| `status` | Raw API support status, e.g. `\"Full Support\"`, `\"End of life\"` (on success) |\n| `ocp_compatible` | `true`\u002F`false`\u002F`null` — whether the version is compatible with the target OCP (on success) |\n| `phases` | Lifecycle phases with `name`, `start_date`, `end_date` (on success) |\n| `available_versions` | Versions the API does track (when package exists but version doesn't) |\n\n## When to Use\n\n- **Upgrade readiness**: check if installed operators are compatible with the\n  target OCP version before upgrading\n- **EOL planning**: identify products approaching or past end of life\n- **Support status**: determine current support phase for any Red Hat product\n- **Cross-reference with update-advisor**: when `olm_operator_lifecycle` data\n  is present in readiness JSON, use `olm-check` to verify lifecycle status\n\n## Important\n\n- `ocp_versions` is only present on **layered product** versions, not on OCP itself.\n- Not all operators have lifecycle entries — `olm-check` sets `error` on the\n  result for operators without data.\n- The `package` field in API responses maps to the OLM Subscription's\n  `spec.name` — use this for exact matching, not product name.\n",{"data":33,"body":34},{"name":4,"description":6},{"type":35,"children":36},"root",[37,46,52,59,81,115,122,135,288,317,322,334,395,423,443,566,587,607,613,618,629,686,696,701,914,920,978,984,1043],{"type":38,"tag":39,"props":40,"children":42},"element","h1",{"id":41},"red-hat-product-life-cycle",[43],{"type":44,"value":45},"text","Red Hat Product Life Cycle",{"type":38,"tag":47,"props":48,"children":49},"p",{},[50],{"type":44,"value":51},"Query the Red Hat Product Life Cycle API to check support status, EOL dates, and OpenShift compatibility for Red Hat products and layered operators.",{"type":38,"tag":53,"props":54,"children":56},"h2",{"id":55},"cli-tool",[57],{"type":44,"value":58},"CLI Tool",{"type":38,"tag":47,"props":60,"children":61},{},[62,64,71,73,79],{"type":44,"value":63},"All queries go through ",{"type":38,"tag":65,"props":66,"children":68},"code",{"className":67},[],[69],{"type":44,"value":70},"product-lifecycle\u002Fscripts\u002Fplc_lookup.py",{"type":44,"value":72}," — a standalone\nPython 3 script with no dependencies beyond stdlib. Run with ",{"type":38,"tag":65,"props":74,"children":76},{"className":75},[],[77],{"type":44,"value":78},"-h",{"type":44,"value":80}," for full usage:",{"type":38,"tag":82,"props":83,"children":88},"pre",{"className":84,"code":85,"language":86,"meta":87,"style":87},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py -h\n","bash","",[89],{"type":38,"tag":65,"props":90,"children":91},{"__ignoreMap":87},[92],{"type":38,"tag":93,"props":94,"children":97},"span",{"class":95,"line":96},"line",1,[98,104,110],{"type":38,"tag":93,"props":99,"children":101},{"style":100},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[102],{"type":44,"value":103},"python3",{"type":38,"tag":93,"props":105,"children":107},{"style":106},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[108],{"type":44,"value":109}," product-lifecycle\u002Fscripts\u002Fplc_lookup.py",{"type":38,"tag":93,"props":111,"children":112},{"style":106},[113],{"type":44,"value":114}," -h\n",{"type":38,"tag":116,"props":117,"children":119},"h3",{"id":118},"commands",[120],{"type":44,"value":121},"Commands",{"type":38,"tag":123,"props":124,"children":126},"h4",{"id":125},"products-query-products-by-name",[127,133],{"type":38,"tag":65,"props":128,"children":130},{"className":129},[],[131],{"type":44,"value":132},"products",{"type":44,"value":134}," — Query products by name",{"type":38,"tag":82,"props":136,"children":138},{"className":84,"code":137,"language":86,"meta":87,"style":87},"# Look up a product\npython3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py products \"logging for Red Hat OpenShift\"\n\n# With OCP compatibility check\npython3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py products \"logging for Red Hat OpenShift\" --ocp 4.21\n\n# Look up OCP itself\npython3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py products \"Red Hat OpenShift Container Platform\"\n",[139],{"type":38,"tag":65,"props":140,"children":141},{"__ignoreMap":87},[142,151,184,194,203,242,250,259],{"type":38,"tag":93,"props":143,"children":144},{"class":95,"line":96},[145],{"type":38,"tag":93,"props":146,"children":148},{"style":147},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[149],{"type":44,"value":150},"# Look up a product\n",{"type":38,"tag":93,"props":152,"children":154},{"class":95,"line":153},2,[155,159,163,168,174,179],{"type":38,"tag":93,"props":156,"children":157},{"style":100},[158],{"type":44,"value":103},{"type":38,"tag":93,"props":160,"children":161},{"style":106},[162],{"type":44,"value":109},{"type":38,"tag":93,"props":164,"children":165},{"style":106},[166],{"type":44,"value":167}," products",{"type":38,"tag":93,"props":169,"children":171},{"style":170},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[172],{"type":44,"value":173}," \"",{"type":38,"tag":93,"props":175,"children":176},{"style":106},[177],{"type":44,"value":178},"logging for Red Hat OpenShift",{"type":38,"tag":93,"props":180,"children":181},{"style":170},[182],{"type":44,"value":183},"\"\n",{"type":38,"tag":93,"props":185,"children":187},{"class":95,"line":186},3,[188],{"type":38,"tag":93,"props":189,"children":191},{"emptyLinePlaceholder":190},true,[192],{"type":44,"value":193},"\n",{"type":38,"tag":93,"props":195,"children":197},{"class":95,"line":196},4,[198],{"type":38,"tag":93,"props":199,"children":200},{"style":147},[201],{"type":44,"value":202},"# With OCP compatibility check\n",{"type":38,"tag":93,"props":204,"children":205},{"class":95,"line":21},[206,210,214,218,222,226,231,236],{"type":38,"tag":93,"props":207,"children":208},{"style":100},[209],{"type":44,"value":103},{"type":38,"tag":93,"props":211,"children":212},{"style":106},[213],{"type":44,"value":109},{"type":38,"tag":93,"props":215,"children":216},{"style":106},[217],{"type":44,"value":167},{"type":38,"tag":93,"props":219,"children":220},{"style":170},[221],{"type":44,"value":173},{"type":38,"tag":93,"props":223,"children":224},{"style":106},[225],{"type":44,"value":178},{"type":38,"tag":93,"props":227,"children":228},{"style":170},[229],{"type":44,"value":230},"\"",{"type":38,"tag":93,"props":232,"children":233},{"style":106},[234],{"type":44,"value":235}," --ocp",{"type":38,"tag":93,"props":237,"children":239},{"style":238},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[240],{"type":44,"value":241}," 4.21\n",{"type":38,"tag":93,"props":243,"children":245},{"class":95,"line":244},6,[246],{"type":38,"tag":93,"props":247,"children":248},{"emptyLinePlaceholder":190},[249],{"type":44,"value":193},{"type":38,"tag":93,"props":251,"children":253},{"class":95,"line":252},7,[254],{"type":38,"tag":93,"props":255,"children":256},{"style":147},[257],{"type":44,"value":258},"# Look up OCP itself\n",{"type":38,"tag":93,"props":260,"children":262},{"class":95,"line":261},8,[263,267,271,275,279,284],{"type":38,"tag":93,"props":264,"children":265},{"style":100},[266],{"type":44,"value":103},{"type":38,"tag":93,"props":268,"children":269},{"style":106},[270],{"type":44,"value":109},{"type":38,"tag":93,"props":272,"children":273},{"style":106},[274],{"type":44,"value":167},{"type":38,"tag":93,"props":276,"children":277},{"style":170},[278],{"type":44,"value":173},{"type":38,"tag":93,"props":280,"children":281},{"style":106},[282],{"type":44,"value":283},"Red Hat OpenShift Container Platform",{"type":38,"tag":93,"props":285,"children":286},{"style":170},[287],{"type":44,"value":183},{"type":38,"tag":47,"props":289,"children":290},{},[291,293,299,301,307,309,315],{"type":44,"value":292},"Returns matching product versions with support status, OCP compatibility,\nand lifecycle phase dates. When ",{"type":38,"tag":65,"props":294,"children":296},{"className":295},[],[297],{"type":44,"value":298},"--ocp",{"type":44,"value":300}," is provided, adds ",{"type":38,"tag":65,"props":302,"children":304},{"className":303},[],[305],{"type":44,"value":306},"ocp_target",{"type":44,"value":308}," and\n",{"type":38,"tag":65,"props":310,"children":312},{"className":311},[],[313],{"type":44,"value":314},"ocp_compatible",{"type":44,"value":316}," (true\u002Ffalse\u002Fnull) to each version entry.",{"type":38,"tag":47,"props":318,"children":319},{},[320],{"type":44,"value":321},"Be specific with product names to avoid overly broad results.",{"type":38,"tag":123,"props":323,"children":325},{"id":324},"olm-check-batch-check-olm-operators",[326,332],{"type":38,"tag":65,"props":327,"children":329},{"className":328},[],[330],{"type":44,"value":331},"olm-check",{"type":44,"value":333}," — Batch check OLM operators",{"type":38,"tag":82,"props":335,"children":337},{"className":84,"code":336,"language":86,"meta":87,"style":87},"python3 product-lifecycle\u002Fscripts\u002Fplc_lookup.py olm-check --ocp 4.21 \\\n  --operators '[{\"package\":\"cluster-logging\",\"version\":\"6.5.1\"},{\"package\":\"web-terminal\"}]'\n",[338],{"type":38,"tag":65,"props":339,"children":340},{"__ignoreMap":87},[341,372],{"type":38,"tag":93,"props":342,"children":343},{"class":95,"line":96},[344,348,352,357,361,366],{"type":38,"tag":93,"props":345,"children":346},{"style":100},[347],{"type":44,"value":103},{"type":38,"tag":93,"props":349,"children":350},{"style":106},[351],{"type":44,"value":109},{"type":38,"tag":93,"props":353,"children":354},{"style":106},[355],{"type":44,"value":356}," olm-check",{"type":38,"tag":93,"props":358,"children":359},{"style":106},[360],{"type":44,"value":235},{"type":38,"tag":93,"props":362,"children":363},{"style":238},[364],{"type":44,"value":365}," 4.21",{"type":38,"tag":93,"props":367,"children":369},{"style":368},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[370],{"type":44,"value":371}," \\\n",{"type":38,"tag":93,"props":373,"children":374},{"class":95,"line":153},[375,380,385,390],{"type":38,"tag":93,"props":376,"children":377},{"style":106},[378],{"type":44,"value":379},"  --operators",{"type":38,"tag":93,"props":381,"children":382},{"style":170},[383],{"type":44,"value":384}," '",{"type":38,"tag":93,"props":386,"children":387},{"style":106},[388],{"type":44,"value":389},"[{\"package\":\"cluster-logging\",\"version\":\"6.5.1\"},{\"package\":\"web-terminal\"}]",{"type":38,"tag":93,"props":391,"children":392},{"style":170},[393],{"type":44,"value":394},"'\n",{"type":38,"tag":47,"props":396,"children":397},{},[398,400,406,408,413,415,421],{"type":44,"value":399},"Looks up each operator by its OLM ",{"type":38,"tag":65,"props":401,"children":403},{"className":402},[],[404],{"type":44,"value":405},"package",{"type":44,"value":407}," name. Each operator in the\nJSON array accepts ",{"type":38,"tag":65,"props":409,"children":411},{"className":410},[],[412],{"type":44,"value":405},{"type":44,"value":414}," (required) and ",{"type":38,"tag":65,"props":416,"children":418},{"className":417},[],[419],{"type":44,"value":420},"version",{"type":44,"value":422}," (optional).",{"type":38,"tag":47,"props":424,"children":425},{},[426,428,434,436,441],{"type":44,"value":427},"Returns ",{"type":38,"tag":429,"props":430,"children":431},"strong",{},[432],{"type":44,"value":433},"one result per operator",{"type":44,"value":435},". The shape depends on whether a\n",{"type":38,"tag":65,"props":437,"children":439},{"className":438},[],[440],{"type":44,"value":420},{"type":44,"value":442}," was provided:",{"type":38,"tag":444,"props":445,"children":446},"ul",{},[447,509,543],{"type":38,"tag":448,"props":449,"children":450},"li",{},[451,456,458,463,465,471,472,478,480,486,487,492,493,499,501,507],{"type":38,"tag":429,"props":452,"children":453},{},[454],{"type":44,"value":455},"With version (matched):",{"type":44,"value":457}," ",{"type":38,"tag":65,"props":459,"children":461},{"className":460},[],[462],{"type":44,"value":405},{"type":44,"value":464},", ",{"type":38,"tag":65,"props":466,"children":468},{"className":467},[],[469],{"type":44,"value":470},"requested_version",{"type":44,"value":464},{"type":38,"tag":65,"props":473,"children":475},{"className":474},[],[476],{"type":44,"value":477},"product",{"type":44,"value":479},",\n",{"type":38,"tag":65,"props":481,"children":483},{"className":482},[],[484],{"type":44,"value":485},"status",{"type":44,"value":464},{"type":38,"tag":65,"props":488,"children":490},{"className":489},[],[491],{"type":44,"value":314},{"type":44,"value":464},{"type":38,"tag":65,"props":494,"children":496},{"className":495},[],[497],{"type":44,"value":498},"phases",{"type":44,"value":500},". No ",{"type":38,"tag":65,"props":502,"children":504},{"className":503},[],[505],{"type":44,"value":506},"error",{"type":44,"value":508}," field.",{"type":38,"tag":448,"props":510,"children":511},{},[512,517,518,523,524,529,530,536,537,542],{"type":38,"tag":429,"props":513,"children":514},{},[515],{"type":44,"value":516},"Without version (package exists):",{"type":44,"value":457},{"type":38,"tag":65,"props":519,"children":521},{"className":520},[],[522],{"type":44,"value":405},{"type":44,"value":464},{"type":38,"tag":65,"props":525,"children":527},{"className":526},[],[528],{"type":44,"value":477},{"type":44,"value":479},{"type":38,"tag":65,"props":531,"children":533},{"className":532},[],[534],{"type":44,"value":535},"available_versions",{"type":44,"value":500},{"type":38,"tag":65,"props":538,"children":540},{"className":539},[],[541],{"type":44,"value":506},{"type":44,"value":508},{"type":38,"tag":448,"props":544,"children":545},{},[546,551,552,557,559,564],{"type":38,"tag":429,"props":547,"children":548},{},[549],{"type":44,"value":550},"Error:",{"type":44,"value":457},{"type":38,"tag":65,"props":553,"children":555},{"className":554},[],[556],{"type":44,"value":506},{"type":44,"value":558}," field set — explains what went wrong (package not\nfound, version not tracked). Includes ",{"type":38,"tag":65,"props":560,"children":562},{"className":561},[],[563],{"type":44,"value":535},{"type":44,"value":565}," when the\npackage exists but the version doesn't.",{"type":38,"tag":47,"props":567,"children":568},{},[569,571,577,579,585],{"type":44,"value":570},"When a version is provided, the tool normalizes it to major.minor\n(e.g. ",{"type":38,"tag":65,"props":572,"children":574},{"className":573},[],[575],{"type":44,"value":576},"1.9.0",{"type":44,"value":578}," → ",{"type":38,"tag":65,"props":580,"children":582},{"className":581},[],[583],{"type":44,"value":584},"1.9",{"type":44,"value":586},") and matches against API version names.",{"type":38,"tag":47,"props":588,"children":589},{},[590,592,598,600,605],{"type":44,"value":591},"Reports ",{"type":38,"tag":65,"props":593,"children":595},{"className":594},[],[596],{"type":44,"value":597},"lifecycle_unavailable",{"type":44,"value":599}," listing every operator whose result has ",{"type":38,"tag":65,"props":601,"children":603},{"className":602},[],[604],{"type":44,"value":506},{"type":44,"value":606}," set.",{"type":38,"tag":53,"props":608,"children":610},{"id":609},"output-format",[611],{"type":44,"value":612},"Output Format",{"type":38,"tag":47,"props":614,"children":615},{},[616],{"type":44,"value":617},"All commands output JSON.",{"type":38,"tag":116,"props":619,"children":621},{"id":620},"products-output",[622,627],{"type":38,"tag":65,"props":623,"children":625},{"className":624},[],[626],{"type":44,"value":132},{"type":44,"value":628}," output",{"type":38,"tag":47,"props":630,"children":631},{},[632,634,639,640,646,647,652,653,658,659,664,665,671,672,677,679,684],{"type":44,"value":633},"Each product version entry includes ",{"type":38,"tag":65,"props":635,"children":637},{"className":636},[],[638],{"type":44,"value":477},{"type":44,"value":464},{"type":38,"tag":65,"props":641,"children":643},{"className":642},[],[644],{"type":44,"value":645},"former_names",{"type":44,"value":464},{"type":38,"tag":65,"props":648,"children":650},{"className":649},[],[651],{"type":44,"value":405},{"type":44,"value":479},{"type":38,"tag":65,"props":654,"children":656},{"className":655},[],[657],{"type":44,"value":420},{"type":44,"value":464},{"type":38,"tag":65,"props":660,"children":662},{"className":661},[],[663],{"type":44,"value":485},{"type":44,"value":464},{"type":38,"tag":65,"props":666,"children":668},{"className":667},[],[669],{"type":44,"value":670},"ocp_versions",{"type":44,"value":464},{"type":38,"tag":65,"props":673,"children":675},{"className":674},[],[676],{"type":44,"value":314},{"type":44,"value":678},", and ",{"type":38,"tag":65,"props":680,"children":682},{"className":681},[],[683],{"type":44,"value":498},{"type":44,"value":685},".",{"type":38,"tag":116,"props":687,"children":689},{"id":688},"olm-check-output",[690,695],{"type":38,"tag":65,"props":691,"children":693},{"className":692},[],[694],{"type":44,"value":331},{"type":44,"value":628},{"type":38,"tag":47,"props":697,"children":698},{},[699],{"type":44,"value":700},"One entry per operator:",{"type":38,"tag":702,"props":703,"children":704},"table",{},[705,724],{"type":38,"tag":706,"props":707,"children":708},"thead",{},[709],{"type":38,"tag":710,"props":711,"children":712},"tr",{},[713,719],{"type":38,"tag":714,"props":715,"children":716},"th",{},[717],{"type":44,"value":718},"Field",{"type":38,"tag":714,"props":720,"children":721},{},[722],{"type":44,"value":723},"Description",{"type":38,"tag":725,"props":726,"children":727},"tbody",{},[728,745,761,777,793,824,861,898],{"type":38,"tag":710,"props":729,"children":730},{},[731,740],{"type":38,"tag":732,"props":733,"children":734},"td",{},[735],{"type":38,"tag":65,"props":736,"children":738},{"className":737},[],[739],{"type":44,"value":405},{"type":38,"tag":732,"props":741,"children":742},{},[743],{"type":44,"value":744},"OLM package name queried",{"type":38,"tag":710,"props":746,"children":747},{},[748,756],{"type":38,"tag":732,"props":749,"children":750},{},[751],{"type":38,"tag":65,"props":752,"children":754},{"className":753},[],[755],{"type":44,"value":470},{"type":38,"tag":732,"props":757,"children":758},{},[759],{"type":44,"value":760},"Normalized version checked (when provided)",{"type":38,"tag":710,"props":762,"children":763},{},[764,772],{"type":38,"tag":732,"props":765,"children":766},{},[767],{"type":38,"tag":65,"props":768,"children":770},{"className":769},[],[771],{"type":44,"value":506},{"type":38,"tag":732,"props":773,"children":774},{},[775],{"type":44,"value":776},"Why data is unavailable — absent on success, set on failure",{"type":38,"tag":710,"props":778,"children":779},{},[780,788],{"type":38,"tag":732,"props":781,"children":782},{},[783],{"type":38,"tag":65,"props":784,"children":786},{"className":785},[],[787],{"type":44,"value":477},{"type":38,"tag":732,"props":789,"children":790},{},[791],{"type":44,"value":792},"Product name (on success)",{"type":38,"tag":710,"props":794,"children":795},{},[796,804],{"type":38,"tag":732,"props":797,"children":798},{},[799],{"type":38,"tag":65,"props":800,"children":802},{"className":801},[],[803],{"type":44,"value":485},{"type":38,"tag":732,"props":805,"children":806},{},[807,809,815,816,822],{"type":44,"value":808},"Raw API support status, e.g. ",{"type":38,"tag":65,"props":810,"children":812},{"className":811},[],[813],{"type":44,"value":814},"\"Full Support\"",{"type":44,"value":464},{"type":38,"tag":65,"props":817,"children":819},{"className":818},[],[820],{"type":44,"value":821},"\"End of life\"",{"type":44,"value":823}," (on success)",{"type":38,"tag":710,"props":825,"children":826},{},[827,835],{"type":38,"tag":732,"props":828,"children":829},{},[830],{"type":38,"tag":65,"props":831,"children":833},{"className":832},[],[834],{"type":44,"value":314},{"type":38,"tag":732,"props":836,"children":837},{},[838,844,846,852,853,859],{"type":38,"tag":65,"props":839,"children":841},{"className":840},[],[842],{"type":44,"value":843},"true",{"type":44,"value":845},"\u002F",{"type":38,"tag":65,"props":847,"children":849},{"className":848},[],[850],{"type":44,"value":851},"false",{"type":44,"value":845},{"type":38,"tag":65,"props":854,"children":856},{"className":855},[],[857],{"type":44,"value":858},"null",{"type":44,"value":860}," — whether the version is compatible with the target OCP (on success)",{"type":38,"tag":710,"props":862,"children":863},{},[864,872],{"type":38,"tag":732,"props":865,"children":866},{},[867],{"type":38,"tag":65,"props":868,"children":870},{"className":869},[],[871],{"type":44,"value":498},{"type":38,"tag":732,"props":873,"children":874},{},[875,877,883,884,890,891,897],{"type":44,"value":876},"Lifecycle phases with ",{"type":38,"tag":65,"props":878,"children":880},{"className":879},[],[881],{"type":44,"value":882},"name",{"type":44,"value":464},{"type":38,"tag":65,"props":885,"children":887},{"className":886},[],[888],{"type":44,"value":889},"start_date",{"type":44,"value":464},{"type":38,"tag":65,"props":892,"children":894},{"className":893},[],[895],{"type":44,"value":896},"end_date",{"type":44,"value":823},{"type":38,"tag":710,"props":899,"children":900},{},[901,909],{"type":38,"tag":732,"props":902,"children":903},{},[904],{"type":38,"tag":65,"props":905,"children":907},{"className":906},[],[908],{"type":44,"value":535},{"type":38,"tag":732,"props":910,"children":911},{},[912],{"type":44,"value":913},"Versions the API does track (when package exists but version doesn't)",{"type":38,"tag":53,"props":915,"children":917},{"id":916},"when-to-use",[918],{"type":44,"value":919},"When to Use",{"type":38,"tag":444,"props":921,"children":922},{},[923,933,943,953],{"type":38,"tag":448,"props":924,"children":925},{},[926,931],{"type":38,"tag":429,"props":927,"children":928},{},[929],{"type":44,"value":930},"Upgrade readiness",{"type":44,"value":932},": check if installed operators are compatible with the\ntarget OCP version before upgrading",{"type":38,"tag":448,"props":934,"children":935},{},[936,941],{"type":38,"tag":429,"props":937,"children":938},{},[939],{"type":44,"value":940},"EOL planning",{"type":44,"value":942},": identify products approaching or past end of life",{"type":38,"tag":448,"props":944,"children":945},{},[946,951],{"type":38,"tag":429,"props":947,"children":948},{},[949],{"type":44,"value":950},"Support status",{"type":44,"value":952},": determine current support phase for any Red Hat product",{"type":38,"tag":448,"props":954,"children":955},{},[956,961,963,969,971,976],{"type":38,"tag":429,"props":957,"children":958},{},[959],{"type":44,"value":960},"Cross-reference with update-advisor",{"type":44,"value":962},": when ",{"type":38,"tag":65,"props":964,"children":966},{"className":965},[],[967],{"type":44,"value":968},"olm_operator_lifecycle",{"type":44,"value":970}," data\nis present in readiness JSON, use ",{"type":38,"tag":65,"props":972,"children":974},{"className":973},[],[975],{"type":44,"value":331},{"type":44,"value":977}," to verify lifecycle status",{"type":38,"tag":53,"props":979,"children":981},{"id":980},"important",[982],{"type":44,"value":983},"Important",{"type":38,"tag":444,"props":985,"children":986},{},[987,1004,1023],{"type":38,"tag":448,"props":988,"children":989},{},[990,995,997,1002],{"type":38,"tag":65,"props":991,"children":993},{"className":992},[],[994],{"type":44,"value":670},{"type":44,"value":996}," is only present on ",{"type":38,"tag":429,"props":998,"children":999},{},[1000],{"type":44,"value":1001},"layered product",{"type":44,"value":1003}," versions, not on OCP itself.",{"type":38,"tag":448,"props":1005,"children":1006},{},[1007,1009,1014,1016,1021],{"type":44,"value":1008},"Not all operators have lifecycle entries — ",{"type":38,"tag":65,"props":1010,"children":1012},{"className":1011},[],[1013],{"type":44,"value":331},{"type":44,"value":1015}," sets ",{"type":38,"tag":65,"props":1017,"children":1019},{"className":1018},[],[1020],{"type":44,"value":506},{"type":44,"value":1022}," on the\nresult for operators without data.",{"type":38,"tag":448,"props":1024,"children":1025},{},[1026,1028,1033,1035,1041],{"type":44,"value":1027},"The ",{"type":38,"tag":65,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":44,"value":405},{"type":44,"value":1034}," field in API responses maps to the OLM Subscription's\n",{"type":38,"tag":65,"props":1036,"children":1038},{"className":1037},[],[1039],{"type":44,"value":1040},"spec.name",{"type":44,"value":1042}," — use this for exact matching, not product name.",{"type":38,"tag":1044,"props":1045,"children":1046},"style",{},[1047],{"type":44,"value":1048},"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":1050,"total":1162},[1051,1068,1081,1094,1107,1120,1135,1146,1156],{"slug":1052,"name":1052,"fn":1053,"description":1054,"org":1055,"tags":1056,"stars":1065,"repoUrl":1066,"updatedAt":1067},"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},[1057,1060,1061,1062],{"name":1058,"slug":1059,"type":15},"Debugging","debugging",{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":1063,"slug":1064,"type":15},"SRE","sre",70,"https:\u002F\u002Fgithub.com\u002Fopenshift\u002Flightspeed-service","2026-04-06T18:43:30.354728",{"slug":1069,"name":1069,"fn":1070,"description":1071,"org":1072,"tags":1073,"stars":1065,"repoUrl":1066,"updatedAt":1080},"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},[1074,1077,1078,1079],{"name":1075,"slug":1076,"type":15},"Access Control","access-control",{"name":1058,"slug":1059,"type":15},{"name":20,"slug":8,"type":15},{"name":1063,"slug":1064,"type":15},"2026-04-06T18:43:29.107881",{"slug":1082,"name":1082,"fn":1083,"description":1084,"org":1085,"tags":1086,"stars":1065,"repoUrl":1066,"updatedAt":1093},"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},[1087,1088,1091,1092],{"name":1058,"slug":1059,"type":15},{"name":1089,"slug":1090,"type":15},"Engineering","engineering",{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-04-06T18:43:26.607462",{"slug":1095,"name":1095,"fn":1096,"description":1097,"org":1098,"tags":1099,"stars":1065,"repoUrl":1066,"updatedAt":1106},"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},[1100,1101,1104,1105],{"name":1058,"slug":1059,"type":15},{"name":1102,"slug":1103,"type":15},"Kubernetes","kubernetes",{"name":20,"slug":8,"type":15},{"name":1063,"slug":1064,"type":15},"2026-04-06T18:43:27.866868",{"slug":1108,"name":1108,"fn":1109,"description":1110,"org":1111,"tags":1112,"stars":1065,"repoUrl":1066,"updatedAt":1119},"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},[1113,1114,1117,1118],{"name":1058,"slug":1059,"type":15},{"name":1115,"slug":1116,"type":15},"Networking","networking",{"name":20,"slug":8,"type":15},{"name":1063,"slug":1064,"type":15},"2026-04-06T18:43:31.593028",{"slug":1121,"name":1121,"fn":1122,"description":1123,"org":1124,"tags":1125,"stars":21,"repoUrl":22,"updatedAt":1134},"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},[1126,1129,1130,1131],{"name":1127,"slug":1128,"type":15},"Deployment","deployment",{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":1132,"slug":1133,"type":15},"Risk Assessment","risk-assessment","2026-05-12T06:07:16.759342",{"slug":1136,"name":1136,"fn":1137,"description":1138,"org":1139,"tags":1140,"stars":21,"repoUrl":22,"updatedAt":1145},"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},[1141,1144],{"name":1142,"slug":1143,"type":15},"Documentation","documentation",{"name":1102,"slug":1103,"type":15},"2026-05-12T06:07:15.393562",{"slug":1147,"name":1147,"fn":1148,"description":1149,"org":1150,"tags":1151,"stars":21,"repoUrl":22,"updatedAt":1155},"openshift-docs","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},[1152,1153,1154],{"name":1142,"slug":1143,"type":15},{"name":1102,"slug":1103,"type":15},{"name":20,"slug":8,"type":15},"2026-05-12T06:07:14.03809",{"slug":4,"name":4,"fn":5,"description":6,"org":1157,"tags":1158,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1159,1160,1161],{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},9,{"items":1164,"total":196},[1165,1172,1177,1183],{"slug":1121,"name":1121,"fn":1122,"description":1123,"org":1166,"tags":1167,"stars":21,"repoUrl":22,"updatedAt":1134},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1168,1169,1170,1171],{"name":1127,"slug":1128,"type":15},{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":1132,"slug":1133,"type":15},{"slug":1136,"name":1136,"fn":1137,"description":1138,"org":1173,"tags":1174,"stars":21,"repoUrl":22,"updatedAt":1145},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1175,1176],{"name":1142,"slug":1143,"type":15},{"name":1102,"slug":1103,"type":15},{"slug":1147,"name":1147,"fn":1148,"description":1149,"org":1178,"tags":1179,"stars":21,"repoUrl":22,"updatedAt":1155},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1180,1181,1182],{"name":1142,"slug":1143,"type":15},{"name":1102,"slug":1103,"type":15},{"name":20,"slug":8,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":1184,"tags":1185,"stars":21,"repoUrl":22,"updatedAt":23},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1186,1187,1188],{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15}]