apiVersion: "helm-expt.confighub.com/v1alpha1"
kind: "CrdOrderingGapProofReceipt"
metadata:
  name: "crdgap-20260703-rv9"
spec:
  observedAt: "2026-07-03T08:46:22.407Z"
  result: "watch"
  claim: "The cub-direct (no-controller) path applies the OCI bundle with plain `kubectl apply`, which has no dependency ordering or wait. On a FIRST install of a chart that ships a CRD plus a CR of that CRD, the CR fails ('no matches for kind ... ensure CRDs are installed first') and is never created. Helm installs CRDs first; Argo (sync waves) and Flux (retry/health) order it; cub-direct does not."
  legs:
    bundleApply:
      action: "kubectl apply -f <bundle> (CRD + CR together)"
      crCreated: false
      error: "error: resource mapping not found for name: \"my-widget\" namespace: \"default\" from \"/var/folders/4l/8wvwwzxs3xl78749bmmqzzbw0000gp/T/crdgap-b"
      result: "CR failed (gap)"
    orderedFix:
      action: "apply CRD, wait --for=condition=established, then apply CR"
      crCreated: true
      result: "created"
  run:
    rig: "crdgap-20260703-rv9"
    cleanup:
      result: "pass"
  conclusion: "Confirmed: the cub-direct first install of a CRD-bearing bundle fails — the CR applies before the CRD is established. Ordering CRD-first + waiting fixes it. So the no-controller path must install CRDs first (or wait/retry), or use a controller. Same theme as the prune gap: cub-direct is apply-only."
