π€ Generated by the Agentic Engineer
Part of devantler-tech/platform#3558.
Evidence
.github/workflows/publish-chart.yaml packages the chart and runs helm push β¦ oci://ghcr.io/devantler-tech/charts with packages: write only β no id-token: write, no cosign sign. The platform consumes it through k8s/bases/apps/data-product-controller/oci-repository.yaml, which is the only oci://ghcr.io/devantler-tech/* OCIRepository in the platform tree without spec.verify (the four manifests sources all verify against the shared publish workflow's keyless identity). It is pinned by content digest, so the installed chart cannot silently change β but nothing proves who produced that digest, and the pin has to be edited by hand for every release.
Audience and impact
platform#3558 wants CI to require cosign verification on every devantler-tech OCIRepository, discovered by kind and URL. As published today this chart cannot satisfy that: adding spec.verify would make Flux refuse it. So either the guard carries a standing exception for this one source, or the chart is signed β and signing is the reducible fix.
Expected
After helm push, the workflow signs the pushed chart digest keylessly (cosign sign --yes ghcr.io/devantler-tech/charts/data-product-controller@sha256:β¦, with id-token: write), so the OIDC subject is this workflow's path at the tagged ref. The platform side then adds spec.verify with that identity and can drop the hand-maintained digest pin in favour of a semver ref.
Acceptance criteria
Rough size: S.
Blocker: devantler-tech/platform#3475 | upstream | last-verified 2026-09-16: the component is still staged off, so criterion 2's Flux-readiness half is not observable yet. k8s/bases/apps/kustomization.yaml keeps # - data-product-controller/ commented out, and the production cluster has no data-product-controller OCIRepository (the five OCIRepositories that do exist all report Ready with cosign verification). Activation is gated on platform#3498, which is OPEN; the other gate, platform#3497, closed 2026-09-02.
Criteria 1 and 3 are met and evidenced at immutable artifacts, and the consuming spec.verify identity landed in platform#3787. The residual is the runtime readiness half of criterion 2, which becomes observable once the activation program above enables the component.
Part of devantler-tech/platform#3558.
Evidence
.github/workflows/publish-chart.yamlpackages the chart and runshelm push β¦ oci://ghcr.io/devantler-tech/chartswithpackages: writeonly β noid-token: write, nocosign sign. The platform consumes it throughk8s/bases/apps/data-product-controller/oci-repository.yaml, which is the onlyoci://ghcr.io/devantler-tech/*OCIRepository in the platform tree withoutspec.verify(the four manifests sources all verify against the shared publish workflow's keyless identity). It is pinned by content digest, so the installed chart cannot silently change β but nothing proves who produced that digest, and the pin has to be edited by hand for every release.Audience and impact
platform#3558 wants CI to require cosign verification on every devantler-tech OCIRepository, discovered by kind and URL. As published today this chart cannot satisfy that: adding
spec.verifywould make Flux refuse it. So either the guard carries a standing exception for this one source, or the chart is signed β and signing is the reducible fix.Expected
After
helm push, the workflow signs the pushed chart digest keylessly (cosign sign --yes ghcr.io/devantler-tech/charts/data-product-controller@sha256:β¦, withid-token: write), so the OIDC subject is this workflow's path at the tagged ref. The platform side then addsspec.verifywith that identity and can drop the hand-maintained digest pin in favour of a semver ref.Acceptance criteria
cosign verifywith the workflow identity succeeds; read back, not inferred from the YAML).spec.verify.matchOIDCIdentityin a follow-up platform PR, and Flux reports the source Ready with verification.helm pushand signing happen in the same job on the same digest, so a re-tag cannot sign a different artifact.Rough size: S.
Blocker: devantler-tech/platform#3475 | upstream | last-verified 2026-09-16: the component is still staged off, so criterion 2's Flux-readiness half is not observable yet.
k8s/bases/apps/kustomization.yamlkeeps# - data-product-controller/commented out, and the production cluster has nodata-product-controllerOCIRepository (the five OCIRepositories that do exist all report Ready with cosign verification). Activation is gated on platform#3498, which is OPEN; the other gate, platform#3497, closed 2026-09-02.Criteria 1 and 3 are met and evidenced at immutable artifacts, and the consuming
spec.verifyidentity landed in platform#3787. The residual is the runtime readiness half of criterion 2, which becomes observable once the activation program above enables the component.