{
  "apiVersion": "catalog.confighub.com/v1alpha1",
  "kind": "WorkshopSection",
  "section": "guides",
  "schema": "https://confighub.github.io/helm-expt/site/guides.schema.json",
  "generatedFrom": [
    "data/workshop-guides/guides.yaml"
  ],
  "count": 58,
  "rows": [
    {
      "id": "journey-values-did-nothing",
      "group": "journeys",
      "groupTitle": "Five cool demos",
      "title": "Helm ignores my values",
      "summary": "The assistant wrote my Helm values. Did they do anything? Three of seven did nothing, and Helm never said so.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/journey-values-did-nothing.html",
      "firstCommand": "cub config values oci://registry-1.docker.io/cloudpirates/redis --version 0.34.11 --release shop-redis --namespace shop --values values.yaml",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/journey-values-did-nothing.html"
      }
    },
    {
      "id": "journey-preserve-my-fixes",
      "group": "journeys",
      "groupTitle": "Five cool demos",
      "title": "AI overwrites my fixes",
      "summary": "The assistant rewrote my app. Are my fixes still there? Then ConfigHub carries the fixes through the rewrite.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/journey-preserve-my-fixes.html",
      "firstCommand": "cub config diff app-committed.yaml app-regenerated.yaml",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/journey-preserve-my-fixes.html"
      }
    },
    {
      "id": "journey-what-my-app-needs",
      "group": "journeys",
      "groupTitle": "Five cool demos",
      "title": "My app does not fit my platform",
      "summary": "Will my app run on the platform I picked? Refused for two real reasons, fixed on both sides, then checked.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/journey-what-my-app-needs.html",
      "firstCommand": "cub app check shop-web.yaml",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/journey-what-my-app-needs.html"
      }
    },
    {
      "id": "journey-before-gitops",
      "group": "journeys",
      "groupTitle": "Five cool demos",
      "title": "My chart behaves differently in GitOps",
      "summary": "My Redis has run fine for a month. Is it safe to hand to GitOps? Three problems, then a reviewed alternative from the Catalog.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/journey-before-gitops.html",
      "firstCommand": "cub config check work/bitnami.yaml",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/journey-before-gitops.html"
      }
    },
    {
      "id": "journey-installs-never-starts",
      "group": "journeys",
      "groupTitle": "Five cool demos",
      "title": "My app installs but will not start",
      "summary": "Every check passes. Should I install it? The image no longer exists, said before the install.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/journey-installs-never-starts.html",
      "firstCommand": "cub config check work/mysql.yaml",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/journey-installs-never-starts.html"
      }
    },
    {
      "id": "how-the-model-works",
      "group": "deep-dives",
      "groupTitle": "Deep Dives",
      "title": "How the model works",
      "summary": "Flatten it, put it in an OCI bundle with a plan if it needs one, and load it into ConfigHub. Three steps on one short page, the same for every format.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/model-and-vocabulary.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/model-and-vocabulary.html"
      }
    },
    {
      "id": "ai-chaos-in-production",
      "group": "deep-dives",
      "groupTitle": "Deep Dives",
      "title": "Can AI fix my fleet and prevent the next outage?",
      "summary": "See recorded repairs, approvals and prevention on a disposable Sveltos fleet. Read the story without setup, inspect the evidence, or plan the full two-to-three-hour demonstration.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/ai-chaos-in-production.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/ai-chaos-in-production.html"
      }
    },
    {
      "id": "deploy-gpu-operator-from-catalog",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Deploy the GPU Operator from the Catalog",
      "summary": "One Helm chart from the Catalog in five steps. Install it, load it into ConfigHub, upgrade it, and test it on a GPU node.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/deploy-gpu-operator-from-catalog.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/deploy-gpu-operator-from-catalog.html"
      }
    },
    {
      "id": "deploy-one-thing",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Deploy one thing, and look before you do",
      "summary": "Pick one Catalog entry, read the exact objects it installs, then save it in ConfigHub and release it to a local cluster. One dated run shows the end state.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/deploy-one-thing.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/deploy-one-thing.html"
      }
    },
    {
      "id": "redis-intro",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Walk the whole model once, with Redis",
      "summary": "One chart, Redis, walked through the Catalog, flattening, OCI, variants, promotion, policy and stacks in one pass, marking which steps are free and local.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-redis-intro-guide.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-redis-intro-guide.html"
      }
    },
    {
      "id": "try",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Try it: Redis in ten minutes",
      "summary": "Render one public Redis catalog package and inspect its exact Kubernetes objects without contacting ConfigHub Server or Kubernetes.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/try.html",
      "firstCommand": "cub installer setup --pull oci://europe-west1-docker.pkg.dev/nth-fort-499605-q5/helm-expt/bitnami-redis:25.5.3@sha256:a216ce212424e05b341ef5000f1798e6014b72b8bc3dce9f315285871037af2a --base reuse-existing-secret --work-dir ./redis --namespace redis --non-interactive --output-oci ./redis-25.oci",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/try.html"
      }
    },
    {
      "id": "demo",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "From one chart to a governed fleet in ten minutes",
      "summary": "In ten minutes you go from checking one chart to generating a governed fleet, checking a whole inference platform on the way, most of it free and copy-paste.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/demo.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/demo.html"
      }
    },
    {
      "id": "ai",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Use ConfigHub Workshop with your AI agent",
      "summary": "Install the ConfigHub Workshop agent skill, choose a configuration task, and keep exact objects, lifecycle work, checks, and limits visible.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/ai.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/ai.html"
      }
    },
    {
      "id": "testing",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Find a starting configuration",
      "summary": "Say what you need, try a simple Redis example, choose how to run a starting example, then continue in ConfigHub or on a platform.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/testing.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/testing.html"
      }
    },
    {
      "id": "check-a-claim",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Check a claim yourself",
      "summary": "Pick a claim the site makes, run the smallest check that answers it, and read what it proved and what it left open.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/check-a-claim-yourself.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/check-a-claim-yourself.html"
      }
    },
    {
      "id": "catalog-inspection",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Inspect and keep an exact record",
      "summary": "Download the full Redis default record with its Catalog and record hashes, then reproduce the lookup and a refusal locally with Node and a checkout.",
      "state": "published",
      "address": "https://github.com/confighub/helm-expt/tree/main/examples/workshop-catalog-inspection",
      "next": {
        "address": "https://github.com/confighub/helm-expt/tree/main/examples/workshop-catalog-inspection"
      }
    },
    {
      "id": "choose-a-tool",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "Choose a tool and start",
      "summary": "Pick the tool for what you want to do now, and the path for a chart the Catalog does not have.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/choose-a-tool.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/choose-a-tool.html"
      }
    },
    {
      "id": "helm-questions",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Answer the ten questions Helm users ask",
      "summary": "Walk the ten questions a Helm user asks, with the pain beneath each one and a check you run on your agent's answer.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-helm-questions-guide.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-helm-questions-guide.html"
      }
    },
    {
      "id": "values",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Find why a Helm value did not change the output",
      "summary": "Compare a typo with the correct key in controlled renders, including a value the template transforms.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-values-guide.html",
      "firstCommand": "cub config values oauth2-proxy --repo https://oauth2-proxy.github.io/manifests --version 10.7.0 --values my-values.yaml --out values-report.json --render-out candidate.yaml --exit-code",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-values-guide.html"
      }
    },
    {
      "id": "why-did-helm-ignore-my-values",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Why did Helm ignore my values?",
      "summary": "Find values that Helm accepts but a chart does not use by comparing the rendered Kubernetes objects with and without each supplied key.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/why-did-helm-ignore-my-values.html",
      "firstCommand": "cub config values oauth2-proxy --repo https://oauth2-proxy.github.io/manifests --version 10.7.0 --values my-values.yaml --out values-report.json --render-out candidate.yaml --exit-code",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/why-did-helm-ignore-my-values.html"
      }
    },
    {
      "id": "did-this-chart-version-change",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Did this chart version change upstream?",
      "summary": "Check whether an upstream publisher changed the package bytes behind an existing Helm chart version.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/did-this-chart-version-change.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/did-this-chart-version-change.html"
      }
    },
    {
      "id": "did-your-bitnami-chart-stop-pulling",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Did your Bitnami chart stop pulling?",
      "summary": "Find a tested, verified successor for a Bitnami chart that no longer pulls anonymously, with each successor linked to its catalog entry.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/did-your-bitnami-chart-stop-pulling.html",
      "firstCommand": "cub config check render.yaml --images --exit-code",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/did-your-bitnami-chart-stop-pulling.html"
      }
    },
    {
      "id": "upgrade",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Review a chart upgrade before promoting it",
      "summary": "Compare retained versions and prepare a review packet that keeps missing promotion evidence visible.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-upgrade-guide.html",
      "firstCommand": "cub config diff upgrade-review/current.yaml upgrade-review/candidate.yaml --json --out upgrade-review/comparison.json",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-upgrade-guide.html"
      }
    },
    {
      "id": "gpu-operator-upgrade",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "See what a gpu-operator upgrade changes",
      "summary": "Render three versions of NVIDIA's public gpu-operator chart, then compare a version upgrade, a patch upgrade and a driver version change field by field.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-gpu-operator-upgrade-guide.html",
      "firstCommand": "cub config diff gpu-operator-25.10.1.yaml gpu-operator-26.3.3.yaml --summary",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-gpu-operator-upgrade-guide.html"
      }
    },
    {
      "id": "adapt",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Adapt a configuration and inspect the exact edit",
      "summary": "Change one replica count, inspect the exact diff and spot an unexpected second edit.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-adapt-guide.html",
      "firstCommand": "cub config diff committed.yaml k8s/deploy.yaml --out review.json",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-adapt-guide.html"
      }
    },
    {
      "id": "byo-charts",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Render your own chart to exact objects, adapt them as data, and keep them",
      "summary": "Render your own chart and values, an AI-written one included, then check, diff, adapt a field, and keep the reviewed objects for your own Argo CD or Flux.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-byo-charts-guide.html",
      "firstCommand": "cub helm template nginx oci://registry-1.docker.io/bitnamicharts/nginx --version 24.0.2 --namespace nginx --values examples/byo-helm-values/reviewed-values.yaml --output-dir ./rendered",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-byo-charts-guide.html"
      }
    },
    {
      "id": "send-a-public-chart",
      "group": "helm-questions",
      "groupTitle": "Helm questions",
      "title": "Send a missing or broken public chart",
      "summary": "Look for a public chart in the Catalog, render it yourself, and send the chart and values when it is missing or its output differs from Helm.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/send-a-public-chart.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/send-a-public-chart.html"
      }
    },
    {
      "id": "aicr",
      "group": "formats",
      "groupTitle": "Formats",
      "title": "Answer the questions AICR users ask",
      "summary": "Compose an H100 training recipe's exact objects, compare three retained versions, and read the recorded accelerator-fit and component-order routes.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-aicr-guide.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-aicr-guide.html"
      }
    },
    {
      "id": "timoni",
      "group": "formats",
      "groupTitle": "Formats",
      "title": "Answer the questions Timoni users ask",
      "summary": "Build a typed module's exact objects, check the typed schema and the CRD ordering, and see which module bytes are digest-bound.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-timoni-guide.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-timoni-guide.html"
      }
    },
    {
      "id": "yaml",
      "group": "formats",
      "groupTitle": "Formats",
      "title": "Answer the questions plain Kubernetes YAML users ask",
      "summary": "Check what four files will install, compare two versions with one edit, and read why this base's lifecycle-route status is a recorded gap.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-yaml-guide.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-yaml-guide.html"
      }
    },
    {
      "id": "kubara",
      "group": "formats",
      "groupTitle": "Formats",
      "title": "Answer the questions Kubara users ask",
      "summary": "Check what a generated Kubara platform contains, and read its recorded CRD, secret and bootstrap routes. To govern a Kubara platform, use cub kubara.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-kubara-guide.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-kubara-guide.html"
      }
    },
    {
      "id": "gitops-adopter",
      "group": "gitops",
      "groupTitle": "GitOps",
      "title": "Use ConfigHub With Argo CD Or Flux",
      "summary": "Keep the Argo CD or Flux you already run. ConfigHub publishes the reviewed Kubernetes objects as an OCI image for that controller to pull.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/gitops-adopter-guide.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/gitops-adopter-guide.html"
      }
    },
    {
      "id": "deploy-with-flux-or-argo",
      "group": "gitops",
      "groupTitle": "GitOps",
      "title": "Run it with Flux, Argo CD, or kubectl",
      "summary": "Reconcile a published component with no account, render any catalog chart to an image your Flux, Argo CD, or kubectl consumes, and verify its receipt first.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/deploy-with-flux-or-argo.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/deploy-with-flux-or-argo.html"
      }
    },
    {
      "id": "argocd-hardening",
      "group": "gitops",
      "groupTitle": "GitOps",
      "title": "Harden Argo CD before production, as a variant you can check and keep",
      "summary": "Turn security advice into a checked variant of the Catalog's Argo CD base, compare it with the base, and keep it with a staging and production path.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-argocd-hardening-guide.html",
      "firstCommand": "cub config values argo-cd --repo https://argoproj.github.io/argo-helm --version 10.2.1 --release argo-cd --namespace argocd --values base-values.yaml --out base-report.json --render-out base-render.yaml",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-argocd-hardening-guide.html"
      }
    },
    {
      "id": "bring-sveltos-into-confighub",
      "group": "gitops",
      "groupTitle": "GitOps",
      "title": "Bring your Sveltos fleet into ConfigHub",
      "summary": "Preview exported fleet configuration, review ownership and connect live profiles in stages.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/bring-sveltos-into-confighub.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/bring-sveltos-into-confighub.html"
      }
    },
    {
      "id": "bring-argo-into-confighub",
      "group": "gitops",
      "groupTitle": "GitOps",
      "title": "Bring your Argo CD apps into ConfigHub",
      "summary": "Preview your existing setup without an account, then save, connect and review a change while Argo CD keeps deploying.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/bring-argo-into-confighub.html",
      "firstCommand": "cub argo plan .",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/bring-argo-into-confighub.html"
      }
    },
    {
      "id": "bring-flux-into-confighub",
      "group": "gitops",
      "groupTitle": "GitOps",
      "title": "Bring your Flux fleet into ConfigHub",
      "summary": "Preview your existing setup without an account, then save, connect and review a change while Flux keeps deploying.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/bring-flux-into-confighub.html",
      "firstCommand": "cub flux plan . --require Healthy",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/bring-flux-into-confighub.html"
      }
    },
    {
      "id": "compose",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Compose and review a local workshop stack",
      "summary": "Save a Kubara and Argo CD selection, move it, edit the app and retain a refusal when an API does not fit.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-compose-guide.html",
      "firstCommand": "cub stack sandbox ../stacks/kubara-gitops-shop.yaml --workspace ./platform",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-compose-guide.html"
      }
    },
    {
      "id": "stack-from-catalog",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Make a stack from Catalog entries",
      "summary": "Compose NVIDIA's gpu-operator, nvsentinel and cluster-readiness-engine entries into one local stack, check them together, then swap one entry and check again.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-stack-from-catalog-guide.html",
      "firstCommand": "cub stack compose --entry nvidia-gpu-operator-v26-3-3-default --entry nvidia-nvsentinel-v1-25-0-default --entry nvidia-cluster-readiness-engine-v0-6-0-default --name gpu-node --out ./gpu-node",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-stack-from-catalog-guide.html"
      }
    },
    {
      "id": "lifecycle",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Find the hook and CRD work before delivery",
      "summary": "Inspect a hook without running it, preserve an API refusal and identify what delivery still requires.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-lifecycle-guide.html",
      "firstCommand": "cub config diff lifecycle-review/with-hooks.yaml lifecycle-review/without-hooks.yaml --json --out lifecycle-review/hook-diff.json",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-lifecycle-guide.html"
      }
    },
    {
      "id": "match",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Match a GPU workload with supplied facts",
      "summary": "Keep candidate, mismatch and unknown results separately, with the input hashes behind each answer.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-match-guide.html",
      "firstCommand": "cub app match model.yaml --target nodes.yaml --json --out candidate.json",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-match-guide.html"
      }
    },
    {
      "id": "compose-a-stack",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Compose and check a stack",
      "summary": "Get a stack, check it for conflicts and missing needs before anything runs, then run and govern it in ConfigHub. It includes the stacks made to be refused.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/compose-a-stack.html",
      "firstCommand": "cub stack sandbox eks-inference",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/compose-a-stack.html"
      }
    },
    {
      "id": "try-aicr",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Try NVIDIA AICR for GPUs",
      "summary": "Compare existing GPU nodes with a recipe, or pull and read a retained AICR configuration with ORAS.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/try-aicr.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/try-aicr.html"
      }
    },
    {
      "id": "put-an-app-on-a-platform",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Put an app on a platform",
      "summary": "Check what an app needs, check it on a platform, take it into ConfigHub, or bring an app that already runs.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/put-an-app-on-a-platform.html",
      "firstCommand": "cub app check shop-web",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/put-an-app-on-a-platform.html"
      }
    },
    {
      "id": "bring-kubara-into-confighub",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Bring Kubara's managed add-ons into ConfigHub",
      "summary": "Manage your clusters' add-ons with Kubara, and approve every change to them in ConfigHub. See them offline in about 15 minutes, then govern them with cub kubara, or check them with an app as a Workshop stack.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/bring-kubara-into-confighub.html",
      "firstCommand": "cub kubara services",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/bring-kubara-into-confighub.html"
      }
    },
    {
      "id": "handle-hooks-and-crds",
      "group": "stacks-and-platforms",
      "groupTitle": "Stacks and platforms",
      "title": "Handle hooks and CRDs",
      "summary": "Find the hooks, CRDs, setup jobs and target facts a chart needs before delivery, decide who runs each, and stage the target first.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/handle-hooks-and-crds.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/handle-hooks-and-crds.html"
      }
    },
    {
      "id": "promote",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Can I promote this configuration?",
      "summary": "Compare current and proposed Kubernetes objects, see what changes, and choose the tests required before moving the change.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/promote.html",
      "firstCommand": "cub config diff adapt-demo/before.yaml adapt-demo/after.yaml --json --out adapt-demo/diff.json",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/promote.html"
      }
    },
    {
      "id": "review-a-change",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Review one change before it ships",
      "summary": "List the objects one change affects in each environment with no account, then propose it in ConfigHub, see the gate refuse it, approve it, release it and read the record.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-review-a-change-guide.html",
      "firstCommand": "cub config diff before-$env.yaml after-$env.yaml",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-review-a-change-guide.html"
      }
    },
    {
      "id": "field-restore",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Add one field and keep the original configuration",
      "summary": "Review one added label, detect an object replacement and restore the exact original file.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-field-restore-guide.html",
      "firstCommand": "cub config diff field-review/source.yaml field-review/candidate.yaml --json --out field-review/addition.json",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/d/docs/user/workshop-field-restore-guide.html"
      }
    },
    {
      "id": "does-cluster-match-approved-config",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Does the cluster match what we approved?",
      "summary": "Compare approved configuration with live cluster state while keeping the current field-coverage limits visible.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/does-cluster-match-approved-config.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/does-cluster-match-approved-config.html"
      }
    },
    {
      "id": "why-do-dev-and-prod-differ",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Why do development and production differ?",
      "summary": "Record development and production as related configurations so their exact differences and promotion history remain visible.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/why-do-dev-and-prod-differ.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/why-do-dev-and-prod-differ.html"
      }
    },
    {
      "id": "take-a-config-further",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Take a config further",
      "summary": "Take a reviewed configuration into a stack, keep it as an image, or save it in ConfigHub to move it through environments.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/take-a-config-further.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/take-a-config-further.html"
      }
    },
    {
      "id": "change-a-config-safely",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Change a config safely",
      "summary": "Decide whether a change rebuilds the base or belongs to one environment, then preview it and promote only what was reviewed.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/change-a-config-safely.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/change-a-config-safely.html"
      }
    },
    {
      "id": "operate-a-fleet",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Operate a fleet",
      "summary": "Check the starting point, choose an operation, keep a fleet record, and open the working App demonstrations.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/operate-a-fleet.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/operate-a-fleet.html"
      }
    },
    {
      "id": "build-a-confighub-app",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Build a ConfigHub App",
      "summary": "Build an App that repeats one operation on configuration saved in ConfigHub.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/build-a-confighub-app.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/build-a-confighub-app.html"
      }
    },
    {
      "id": "release-promote-roll-back",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "Release, promote and roll back",
      "summary": "Release a reviewed configuration, promote it to the next environment, gate it with approvals, and roll it back.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/how-it-works.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/how-it-works.html"
      }
    },
    {
      "id": "scout-ui",
      "group": "start-here",
      "groupTitle": "Topic based walkthroughs",
      "title": "See what is running with cub scout",
      "summary": "Inspect one workload and its owner in a read-only cluster map, without a ConfigHub account.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/see-what-is-running.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/see-what-is-running.html"
      }
    },
    {
      "id": "config-ui",
      "group": "confighub",
      "groupTitle": "ConfigHub",
      "title": "View and change configuration with ConfigHub UIs",
      "summary": "Browse stored configuration in the browser or cub commander, compare environments and separate editing from release.",
      "state": "published",
      "address": "https://confighub.github.io/helm-expt/site/view-and-change-config-with-uis.html",
      "next": {
        "address": "https://confighub.github.io/helm-expt/site/view-and-change-config-with-uis.html"
      }
    }
  ]
}
