/goal /ultracode-workflows [POL-3] image provenance via Kyverno verifyImages + platform CI cosign signing #41
Labels
No labels
bug
discussion
duplicate
enhancement
goal
help wanted
horizon:backlog
horizon:governance
horizon:mvp
invalid
operator-decision
question
roadmap
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
Depends on
Reference
open-platform/mitosis#41
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Track/Wave:
POL-3· Wave G4 · Size LRepos:
gitops,_app-template,mitosisDepends on: POL-0, POL-1
Why
Closes a supply-chain gap that does NOT exist at all today — anyone with registry write can deploy an unsigned image. Named as a trust gap in the enterprise vision.
Scope
(1) add a cosign signing step to the app-image CI build; (2) a verifyImages/ImageValidatingPolicy ClusterPolicy requiring that signature on any image admitted to app namespaces. mitosis touched only if cosign key material needs per-fork sealing (XL if so).
Acceptance
A CI-signed image deploys; a manually-pushed unsigned image is rejected at admission, visible in the PolicyReport.
Notes
Design gate: a misconfigured verifyImages in enforce mode can brick every app deploy — settle POL-0's enforce/audit + failurePolicy first.
Part of the First Client Deploy → Governance roadmap. The owning agent may recurse into its own subagent team (ultracode workflow) if the task warrants. Honor the seam-serialization: land on a shared seam by rebase, and don't start a seam position until the prior one has merged.
cosign SIGNING delivered + proven; verifyImages held at Audit (2026-07-06)
On the
product-garden.comgranddaughter: generated a platform cosign keypair, sealed it (sops, fork key) intocosign-signing-key.yaml, pasted the real pubkey intoverify-image-provenance, and wiredCOSIGN_PRIVATE_KEY/COSIGN_PASSWORDas Forgejo Actions secrets. The crew-builtqa-smokeimage was then signed by CI and cryptographically verified:So signing works end-to-end. verify-image-provenance is deliberately left at Audit, NOT flipped to Enforce, because of a real gap:
platis a Forgejo user, not an org, so a freshly-generated app repo does NOT auto-receive the COSIGN secrets (onlyREGISTRY_TOKENvia the dispatcher). Flipping verifyImages→Enforce globally would reject every new app the owner builds (unsigned) → bricked app-building.Remaining for full POL-3: per-app/per-fork COSIGN secret provisioning (the documented follow-up in
cosign-signing-key.yaml) — teach the dispatcher to seal + inject COSIGN secrets onto each app repo likeREGISTRY_TOKEN, THEN flip verifyImages to Enforce. Keeping this open for that.