---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: churn-renewal-forecast-bootstrap
  namespace: flux-system
  labels:
    ic-ops.com/phase: "bootstrap"
  annotations:
    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"
    event.toolkit.fluxcd.io/phase: "bootstrap"
    event.toolkit.fluxcd.io/overlay_tag: "latest"
spec:
  interval: 1h
  timeout: 5m
  prune: true
  sourceRef:
    kind: OCIRepository
    name: churn-renewal-forecast-bootstrap
  healthChecks:
    - apiVersion: v1
      kind: Secret
      name: churn-renewal-forecast
      namespace: churn-renewal-forecast
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: churn-renewal-forecast-init
  namespace: flux-system
  labels:
    ic-ops.com/phase: "init"
  annotations:
    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"
    event.toolkit.fluxcd.io/phase: "init"
    event.toolkit.fluxcd.io/overlay_tag: "latest"
spec:
  dependsOn:
    - name: churn-renewal-forecast-bootstrap
  interval: 1h
  timeout: 5m
  wait: true
  force: true
  prune: true
  sourceRef:
    kind: OCIRepository
    name: churn-renewal-forecast-init
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: churn-renewal-forecast-services
  namespace: flux-system
  labels:
    ic-ops.com/phase: "services"
  annotations:
    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"
    event.toolkit.fluxcd.io/phase: "services"
    event.toolkit.fluxcd.io/overlay_tag: "latest"
spec:
  dependsOn:
    - name: churn-renewal-forecast-init
  interval: 1h
  timeout: 5m
  wait: true
  prune: true
  sourceRef:
    kind: OCIRepository
    name: churn-renewal-forecast-services
  healthChecks:
    - apiVersion: apps/v1
      kind: Deployment
      name: churn-renewal-forecast-web
      namespace: churn-renewal-forecast
    - apiVersion: apps/v1
      kind: Deployment
      name: churn-renewal-forecast-worker
      namespace: churn-renewal-forecast


The file /Users/steve.briggs/projects/application-deployment/flux/eks-platform-mgmt-use1-1/apps/churn-renewal-forecast/oci-repo-services.yaml has been updated successfully. (file state is current in your context — no need to Read it back)

---
apiVersion: source.toolkit.fluxcd.io/v1
kind: OCIRepository
metadata:
  name: churn-renewal-forecast-services
  namespace: flux-system
  annotations:
    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"
    event.toolkit.fluxcd.io/phase: "services"
    event.toolkit.fluxcd.io/repo: "oci://registry.ic-ops.net/internal-tooling/churn-renewal-forecast/deploy/eks-platform-mgmt-use1-1/services"
    event.toolkit.fluxcd.io/overlay_tag: "latest"
spec:
  interval: 10m
  ref:
    tag: latest
  url: oci://registry.ic-ops.net/internal-tooling/churn-renewal-forecast/deploy/eks-platform-mgmt-use1-1/services


The file /Users/steve.briggs/projects/application-deployment/flux/eks-platform-mgmt-use1-1/apps/churn-renewal-forecast/flux-kustomization.yaml has been updated successfully. (file state is current in your context — no need to Read it back)

---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: churn-renewal-forecast-bootstrap
  namespace: flux-system
  labels:
    ic-ops.com/phase: "bootstrap"
  annotations:
    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"
    event.toolkit.fluxcd.io/phase: "bootstrap"
    event.toolkit.fluxcd.io/overlay_tag: "latest"
spec:
  interval: 1h
  timeout: 5m
  prune: true
  sourceRef:
    kind: OCIRepository
    name: churn-renewal-forecast-bootstrap
  healthChecks:
    - apiVersion: v1
      kind: Secret
      name: churn-renewal-forecast
      namespace: churn-renewal-forecast
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: churn-renewal-forecast-init
  namespace: flux-system
  labels:
    ic-ops.com/phase: "init"
  annotations:
    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"
    event.toolkit.fluxcd.io/phase: "init"
    event.toolkit.fluxcd.io/overlay_tag: "latest"
spec:
  dependsOn:
    - name: churn-renewal-forecast-bootstrap
  interval: 1h
  timeout: 5m
  wait: true
  force: true
  prune: true
  sourceRef:
    kind: OCIRepository
    name: churn-renewal-forecast-init
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: churn-renewal-forecast-services
  namespace: flux-system
  labels:
    ic-ops.com/phase: "services"
  annotations:
    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"
    event.toolkit.fluxcd.io/phase: "services"
    event.toolkit.fluxcd.io/overlay_tag: "latest"
spec:
  dependsOn:
    - name: churn-renewal-forecast-init
  interval: 1h
  timeout: 5m
  wait: true
  prune: true
  sourceRef:
    kind: OCIRepository
    name: churn-renewal-forecast-services
  healthChecks:
    - apiVersion: apps/v1
      kind: Deployment
      name: churn-renewal-forecast-web
      namespace: churn-renewal-forecast
    - apiVersion: apps/v1
      kind: Deployment
      name: churn-renewal-forecast-worker
      namespace: churn-renewal-forecast

+  name: churn-renewal-forecast-bootstrap

+    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"

+    event.toolkit.fluxcd.io/phase: "bootstrap"

+    event.toolkit.fluxcd.io/overlay_tag: "latest"

+      namespace: churn-renewal-forecast

+    event.toolkit.fluxcd.io/phase: "init"

+    - name: churn-renewal-forecast-bootstrap

+    - name: churn-renewal-forecast-init

---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
  name: churn-renewal-forecast-services
  namespace: flux-system
  labels:
    ic-ops.com/phase: "services"
  annotations:
    event.toolkit.fluxcd.io/app: "churn-renewal-forecast"
    event.toolkit.fluxcd.io/phase: "services"
    event.toolkit.fluxcd.io/overlay_tag: "latest"
spec:
  interval: 1h
  timeout: 5m
  prune: true
  sourceRef:
    kind: OCIRepository
    name: churn-renewal-forecast-services
  healthChecks:
    - apiVersion: apps/v1
      kind: Deployment
      name: churn-renewal-forecast-web
      namespace: churn-renewal-forecast
    - apiVersion: apps/v1
      kind: Deployment
      name: churn-renewal-forecast-worker
      namespace: churn-renewal-forecast


it needs a bootstrap phase and init phase similar to @/Users/steve.briggs/projects/application-deployment/flux/eks-shared-infra-use1-2/apps/saas-tenant-manager


Fix kustomize image transformer tag matching


Done, Sir Charles. All 5 files in place. The dependency chain is:

```
bootstrap → init → services
```

- **bootstrap** — applies namespace, ServiceAccount, ConfigMap, ExternalSecret; health checks on the `churn-renewal-forecast` Secret materializing from Vault
- **init** — runs the prisma migrate Job; `force: true` so Flux replaces the immutable Job spec on each deploy; `wait: true` so services don't start until migration completes
- **services** — deploys web + worker; health checks on both Deployments

One heads up: the `cd.yml` `publish-and-deploy-nonprod` workflow only publishes `services` and `init` overlays today (via `deploy_dir: deploy/kubernetes/deploy`). The bootstrap overlay exists in the repo so it'll get picked up — just verify the ops reusable workflow publishes all subdirectories under `deploy_dir`, not just specific ones.


afplay ~/.claude/sounds/mario/stop/stomp.wav 2>/dev/null || true


<local-command-caveat>Caveat: The messages below were generated by the user while running local commands. DO NOT respond to these messages or otherwise consider them in your response unless the user explicitly asks you to.</local-command-caveat>


<command-name>/exit</command-name>
            <command-message>exit</command-message>
            <command-args></command-args>


<local-command-stdout>See ya!</local-command-stdout>